WordPress网站如何显示用户搜索历史记录

有些网站会显示用户在网站的搜索记录,搜索了哪些词等等。我们在自己做网站时,也可以在自己的网站上添加显示用户搜索历史记录功能。通常用户在网站上的行为会被记录到 Cookies 里,所以通过 Cookies 就可以显示用户搜索历史记录。

第一步:将用户搜索记录写入 Cookie

  1. /**
  2. * 通过Cookie记录用户搜索记录
  3. */
  4. function wpkj_set_recently_searches(){
  5. //仅在前端搜索页面执行
  6. if ( is_search() && !is_admin() ) {
  7. $search_term = get_search_query();
  8. if( $search_term ) $search_term = trim( $search_term );
  9. //如果搜索字段不存在或为空,不继续
  10. if( !$search_term || $search_term === '') return;
  11. //检查并设置搜索历史数组
  12. $recently_searches = array();
  13. if(isset($_COOKIE['wpkj_recently_searches'])) {
  14. $recently_searches = explode(',', $_COOKIE['wpkj_recently_searches'], 20);
  15. }
  16. if(!in_array( $search_term, $recently_searches)){
  17. $recently_searches[] = $search_term;
  18. }
  19. //设置cookie为30天
  20. setcookie('wpkj_recently_searches', implode(',', $recently_searches), current_time('timestamp') + (86400*30), "/");
  21. }
  22. }
  23. add_action( 'wp', 'wpkj_set_recently_searches', 20 );

在上面的代码中,我们封装了一个 wpkj_set_recently_searches 函数,然后将该函数挂载到 wp 钩子中执行。

第二步:获取并输出用户的搜索记录

  1. /**
  2. * 获取用户最近搜索记录
  3. */
  4. function wpkj_get_recently_searches( $limit = 10, $title = false ){
  5. $recently_searches = array();
  6. if(isset($_COOKIE['wpkj_recently_searches'])) {
  7. $recently_searches = explode(',', $_COOKIE['wpkj_recently_searches']);
  8. //将搜索记录倒序
  9. $recently_searches = array_reverse($recently_searches);
  10. if( !empty($recently_searches) ) {
  11. $HTML = '<div class="recently-searches">';
  12. if( $title ) $html .= '<h2 class="searches-title recently-searches-title">'. htmlspecialchars($title) .'</h2>';
  13. $html .= '<ul class="recently-searches-ul">';
  14. $home_url_slash = get_option('home') . '/';
  15. $i = 1;
  16. foreach( $recently_searches as $result ) {
  17. $html .= '<li class="search-item"><a href="'. $home_url_slash . '?s=' . $result . '">'. htmlspecialchars($result) .'</a></li>';
  18. $i++;
  19. }
  20. $html .= '</ul>';
  21. $html .= '<div class="recently-searches-del">'.__( 'Clear search history', THEME_SLUG ).'</div>';
  22. $html .= '</div>';
  23. return $html;
  24. }
  25. }
  26. }

wpkj_get_recently_searches 函数有两个参数,第一个为调用的个数,第二个为标题。然后我们可以在需要输出搜索记录的地方,使用下面的代码即可:

  1. if(function_exists('wpkj_get_recently_searches')) {
  2. echo wpkj_get_recently_searches( 10, '搜索历史');
  3. }

第三步:添加清空当前用户搜索历史功能。这里通过 js 方式实现:

  1. //添加一个js函数用于删除cookie
  2. function delCookie(name) {
  3. var exp = new Date();
  4. exp.setTime(exp.getTime() - 1);
  5. var cval = getCookie(name);
  6. if (cval != null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
  7. }
  8. jQuery(document).ready(function($) {
  9. $(".recently-searches-del").on("click", function() {
  10. //删除cookie
  11. delCookie("wpkj_recently_searches");
  12. //隐去搜索历史部分的内容
  13. $(".recently-searches").fadeOut();
  14. });
  15. });

你可以将上面的 js 代码添加到一个 js 文件中,比如命名为 recently-searches.js,然后可以通过下面的代码引入:

  1. //引入搜索历史js
  2. function wpkj_recently_searches_scripts() {
  3. wp_enqueue_script( 'recently_searches', get_template_directory_uri() . '/assets/js/recently-searches.js', array( 'jquery' ), '', true );
  4. }
  5. add_action( 'wp_enqueue_scripts', 'wpkj_recently_searches_scripts' );

请注意下 js 文件的路径,上面的代码表示我将 recently-searches.js 放在了当前主题的 /assets/js 目录下,你需要根据自己的实际修改这个路径。

这样,我们就在自己的网站上添加了显示用户搜索历史记录功能了。

溫馨提示:

文章標題:WordPress网站如何显示用户搜索历史记录

文章連結:https://www.wuyanshuo.cn/801.html

更新時間:2022年4月30日

1、本站所有資源均不添加推廣檔案或浮水印,壓縮包內若有廣告檔案和浮水印請勿輕易相信。

2、本站資源均為兩層壓縮,第一層7z(尾碼若為wys,請自行修改為7z)有解壓密碼; 第二層zip或cbz,無解壓密碼,可直接使用漫畫類軟件程式查看; 詳情可參攷解壓教程

3、本站大部分內容均收集於網絡! 若內容侵犯到您的權益,請發送郵件至:admin#wysacg.top我們將第一時間處理! 資源所需價格並非資源售賣價格,是收集、整理、編輯詳情以及本站運營的適當補貼,並且本站不提供任何免費技術支援。 所有資源僅限於參攷和學習,版權歸原作者所有!

给TA打赏
共{{data.count}}人
人已打赏
建站教程

检查 WordPress 数据库中是否存在标签

2022-4-30 20:03:38

建站教程

WordPress 网站怎么制作用户浏览记录

2022-4-30 23:17:55

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索