首页 问答 正文

如何在WordPress中使用AJAX创建搜索框自动完成?

注册会员 / 悠然自学 / 2023-06-12/ 浏览 142 次

你可以使用AJAX和WordPress的后端API来创建一个搜索框自动完成功能。

首先,在你的主题文件中创建一个包含搜索框的HTML代码,例如:

<div class="search-wrapper">
  <input type="text" id="searchInput" name="searchInput" placeholder="搜索...">
  <ul id="searchResults"></ul>
</div> 

然后,添加一些JavaScript代码来处理搜索框的自动完成功能:

jQuery(document).ready(function($) {
  var searchInput = $('#searchInput');
  var searchResults = $('#searchResults');

  searchInput.on('input', function() {
    var searchQuery = $(this).val();

    if (searchQuery.length < 2) {
      searchResults.empty();
      return;
    }

    $.ajax({
      url: ajaxurl,                 // WordPress提供的后端API URL
      type: 'POST',
      data: {
        action: 'search_action',     // 后端处理程序的名称
        search_query: searchQuery    // 搜索输入的值
      },
      success: function(response) {
        searchResults.empty();       // 清空搜索结果列表

        if (response.length > 0) {
          response.forEach(function(result) {
            var listItem = $('<li>' + result + '</li>');
            searchResults.append(listItem);
          });
        } else {
          searchResults.append('<li>没有找到相关结果</li>');
        }
      }
    });
  });
}); 

接下来,在你的主题文件的functions.php中添加后端处理程序,例如:

function search_action() {
  $search_query = $_POST['search_query'];

  // 执行你的搜索逻辑,返回符合搜索条件的结果数组
  $results = your_custom_search_function($search_query); 

  // 将结果转换为JSON格式并返回给前端
  wp_send_json($results);
}
add_action('wp_ajax_search_action', 'search_action');    // 仅供已登录用户访问
add_action('wp_ajax_nopriv_search_action', 'search_action');    // 供未登录用户访问 

上述代码中的your_custom_search_function应该是你自定义的搜索逻辑函数,在其中执行实际的搜索操作并返回结果数组。

最后,记得将以上代码添加到你的WordPress主题中,并确保将jQuery库引入到页面中。

现在你的搜索框应该能够在用户输入内容时自动显示匹配的搜索结果了。

大家谈论
    我的见解