📜  wp 自定义自动建议历史记录 if ( is_search() ) { (1)

📅  最后修改于: 2023-12-03 15:06:02.216000             🧑  作者: Mango

自定义自动建议历史记录

介绍

该功能允许在WordPress主题中为搜索表单添加自动建议历史记录。当用户开始输入搜索关键词时,历史记录列表会显示出最近的搜索历史记录。用户可以选择任何一个历史记录,从而避免多次输入相同的搜索关键词。

使用自定义自动建议历史记录能够提高用户体验,尤其是对于那些经常使用搜索功能的用户。同时,该功能也为网站所有者提供了一个机会来跟踪用户的搜索行为,从而优化网站内容和布局。

实现方法

在主题中实现自定义自动建议历史记录,需要使用以下步骤:

  1. 创建一个名为 search-suggestion.js 的JavaScript文件,在其中编写自动建议历史记录的JavaScript代码。

  2. 在主题的 functions.php 文件中,使用 wp_enqueue_script() 函数加载之前创建的 JavaScript 文件。

  3. 在主题中添加一个搜索表单,并在其中设置 autocomplete="off" 属性,禁用浏览器默认的自动建议功能。

  4. 在主题的 search.php 文件中,使用 get_search_query() 函数获取当前的搜索关键词,并将其保存到历史记录中。

  5. 在主题中添加一个历史记录列表,并在其中使用 jQuery 选择器获取所有历史记录,并将它们以列表的形式显示在页面上。

以下是实现自定义自动建议历史记录的代码片段:

if ( is_search() ) {
  // 加载自定义JavaScript文件
  wp_enqueue_script( 'search-suggestion', get_template_directory_uri() . '/js/search-suggestion.js', array( 'jquery' ), '1.0.0', true );

  // 添加搜索表单
  echo '<form role="search" method="get" id="searchform" class="searchform" action="' . esc_url( home_url( '/' ) ) . '" autocomplete="off">';
  echo '<label class="screen-reader-text" for="s">' . __( 'Search for:' ) . '</label>';
  echo '<input type="text" value="' . get_search_query() . '" name="s" id="s" />';
  echo '<input type="submit" id="searchsubmit" value="' . esc_attr__( 'Search' ) .'" />';
  echo '</form>';

  // 获取当前搜索关键词并保存到历史记录中
  if ( get_search_query() ) {
    echo '<script>searchSuggestion.add(\'' . get_search_query() . '\');</script>';
  }

  // 添加历史记录列表
  echo '<ul id="search-suggestion"></ul>';
}
// search-suggestion.js

var searchSuggestion = {
  // 将搜索关键词保存到localStorage中
  add: function(keyword) {
    var data = JSON.parse(localStorage.getItem('searchSuggestion')) || [];
    
    if (data.indexOf(keyword) == -1) {
      data.push(keyword);
      localStorage.setItem('searchSuggestion', JSON.stringify(data));
    }
  },
  
  // 从localStorage中获取历史记录并以列表的形式显示在页面上
  show: function() {
    var data = JSON.parse(localStorage.getItem('searchSuggestion')) || [];
    var $list = $('#search-suggestion');
    
    $list.empty();
    
    if (data.length) {
      for (var i = 0; i < data.length; i++) {
        $list.append('<li>' + data[i] + '</li>');
      }
    } else {
      $list.append('<li>No history found</li>');
    }
  }
};

$(document).ready(function(){
  // 显示历史记录
  searchSuggestion.show();
  
  // 为历史记录添加点击事件
  $(document).on('click', '#search-suggestion li', function(){
    $('#s').val($(this).text());
    $('#searchform').submit();
  });
});
总结

使用自定义自动建议历史记录能够提高网站的用户体验,并为网站所有者提供一个机会来跟踪用户的搜索行为。通过本文提供的实现方法,您可以为WordPress主题添加自动建议历史记录。