网站模板库
  • 首页
  • web前端工具
    • HTML/JS转换工具
    • JS/HTML格式化工具
    • 字母/英文大小写转换工具
    • robots.txt文件生成工具
    • Js压缩/格式化工具
    • Css在线压缩工具_代码格式化
  • 关于我们
    • 免责声明
    • 联系我们
    • 广告服务
    • 服务项目
    • 关于我们
    • 网站轮播
    • 公告
    • 成都优优科技专用
    • 按行业分类
  • web学院
    • 服务器教程
    • 学习资料
      • 基础书籍
      • 交互书籍
      • 入门教程
      • 特效分类
    • 案例分享
    • web资讯
  • 网页特效
    • 图片特效
    • 导航特效
    • 滑动按钮
    • 表单特效
    • 文字特效
    • 弹窗特效
    • 其他特效
  • 织梦模板
    • 科技/电子/数码/通信
    • 文化/艺术/广告/传媒
    • 装修/设计/家居/家具
    • 基建/施工/地产/物业
    • 餐饮/酒店/旅游/票务
    • 食品/果蔬/饮料/日用
    • 服饰/珠宝/礼品/玩具
    • 摄影/婚庆/家政/生活
    • 运动/健身/体育/器材
    • 学校/教育/培训/科研
    • 美容/保健/医院/医疗
    • 金融/财税/咨询/法律
    • 政府/组织/集团/协会
    • 汽车/物流/交通/搬运
    • 机械/设备/制造/仪器
    • 化工/环保/能源/材料
    • 农业/畜牧/养殖/宠物
    • 其他模版
    • IT/软件/信息/互联网
  • 手机模板
    • 手机APP模板
    • 微信小程序模板
    • wap
  • 网站模板
    • joomla模板
    • Drupal模板
    • z-blog模板
    • EyouCms模板
    • Bootstrap模板
    • 帝国cms模板
    • CmsEasy模板
    • MetInfo模板
    • 购物商城模板
      • Shopify主题
      • PrestaShop主题
    • 后台模板
    • 纯HTML模板
    • ecshop模板
    • phpwind模板
    • pbootcms模板
    • phpcms模板
    • wordpress模板
    • discuz模板
  • 教程
    • 织梦教程
    • Discuz教程
    • WordPress教程
    • Phpcms教程
    • Phpwind教程
    • ECShop教程
    • Joomla教程
    • Drupal教程
    • zblog教程
    • EyouCMS教程
    • 帝国cms教程
    • MetInfo教程
    • CmsEasy教程
登录
当前位置:网站模板库 > web学院 > 案例分享 > WordPress教程|如何记录用户搜索历史
admin 案例分享 2020-06-19 9:09:40

WordPress教程|如何记录用户搜索历史

WordPress教程|如何记录用户搜索历史,第1张

一些朋友会有记录用户在网站检索记录的需求。如何实现,请看下面
WordPress教程|如何记录用户搜索历史,第2张

如上图加框部分所示,我们要记录并输出用户的搜索记录,还要添加一个清空搜索历史的功能。

将用户搜索记录写入Cookie

  1. /**
  2.  * 通过Cookie记录用户搜索记录
  3.  */
  4. function wpkj_set_recently_searches(){
  5.  
  6.     //仅在前端搜索页面执行
  7.     if ( is_search() && !is_admin() ) {
  8.  
  9.         $search_term = get_search_query();
  10.  
  11.         if( $search_term ) $search_term = trim( $search_term );
  12.         //如果搜索字段不存在或为空,不继续
  13.         if( !$search_term || $search_term === '') return;
  14.  
  15.         //检查并设置搜索历史数组
  16.         $recently_searches = array();
  17.         if(isset($_COOKIE['wpkj_recently_searches'])) {
  18.             $recently_searches = explode(',', $_COOKIE['wpkj_recently_searches'], 20);
  19.         }
  20.         if(!in_array( $search_term, $recently_searches)){
  21.             $recently_searches[] = $search_term;
  22.         }
  23.         //设置cookie为30天
  24.         setcookie('wpkj_recently_searches', implode(',', $recently_searches), current_time('timestamp') + (86400*30), "/");
  25.     }
  26. }
  27. 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.  
  6.     $recently_searches = array();
  7.     if(isset($_COOKIE['wpkj_recently_searches'])) {
  8.         $recently_searches = explode(',', $_COOKIE['wpkj_recently_searches']);
  9.         //将搜索记录倒序
  10.         $recently_searches = array_reverse($recently_searches);
  11.         if( !emptyempty($recently_searches) ) {
  12.             $html = '<div class="recently-searches">';
  13.             if( $title ) $html .= '<h2 class="searches-title recently-searches-title">'. htmlspecialchars($title) .'</h2>';
  14.             $html .= '<ul class="recently-searches-ul">';
  15.             $home_url_slash = get_option('home') . '/';
  16.             $i = 1;
  17.             foreach( $recently_searches as $result ) {
  18.  
  19.                 $html .= '<li class="search-item"><a href="'. $home_url_slash . '?s=' . $result . '">'. htmlspecialchars($result) .'</a></li>';
  20.                 $i++;
  21.             }
  22.             $html .= '</ul>';
  23.  
  24.             $html .= '<div class="recently-searches-del">'.__( 'Clear search history', THEME_SLUG ).'</div>';
  25.  
  26.             $html .= '</div>';
  27.  
  28.             return $html;
  29.         }
  30.     }
  31. }

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.  
  9. //很抱歉,这里采用的是jquery操作
  10. jQuery(document).ready(function($) {
  11.     $(".recently-searches-del").on("click", function() {
  12.         //删除cookie
  13.         delCookie("wpkj_recently_searches");
  14.         //隐去搜索历史部分的内容
  15.         $(".recently-searches").fadeOut();
  16.     });
  17. });

你可以将上面的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 目录下,你需要根据自己的实际修改这个路径。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » WordPress教程|如何记录用户搜索历史

admin 钻石

分享到:
上一篇
WordPress教程|使用各种方法显示WordPress中最新文章
下一篇
WordPress插件|汉化版网站搜索统计分析插件

相关推荐

谁对 waf 构建比较了解?

谁对 waf 构建比较了解?

[GoLang] 优化连接池: 以 database/sql 为例

[GoLang] 优化连接池: 以 database/sql 为例

急寻前端兼职 大 牛(坐标:上海)哦

急寻前端兼职 大 牛(坐标:上海)哦

Pycoder's Weekly 中文翻译

Pycoder's Weekly 中文翻译

0条评论

发表评论 取消回复

要发表评论,您必须先登录。

提供最优质的资源集合

立即查看 了解详情
网站模板库

主题/付费下载/查看/余额管理/自定义积分,集成支付,卡密,推广奖励等。

本站导航
  • 链接标题
友情链接
  • 链接标题
快速搜索
本站由钛宇宙强力驱动
友情链接:
    商业源码网蜀ICP备2023005044号
    网站模板库
    • 登录
    • 注册
    网站模板库
    • 首页
    • web前端工具►
      • HTML/JS转换工具
      • JS/HTML格式化工具
      • 字母/英文大小写转换工具
      • robots.txt文件生成工具
      • Js压缩/格式化工具
      • Css在线压缩工具_代码格式化
    • 关于我们►
      • 免责声明
      • 联系我们
      • 广告服务
      • 服务项目
      • 关于我们
      • 网站轮播
      • 公告
      • 成都优优科技专用
      • 按行业分类
    • web学院►
      • 服务器教程
      • 学习资料►
        • 基础书籍
        • 交互书籍
        • 入门教程
        • 特效分类
      • 案例分享
      • web资讯
    • 网页特效►
      • 图片特效
      • 导航特效
      • 滑动按钮
      • 表单特效
      • 文字特效
      • 弹窗特效
      • 其他特效
    • 织梦模板►
      • 科技/电子/数码/通信
      • 文化/艺术/广告/传媒
      • 装修/设计/家居/家具
      • 基建/施工/地产/物业
      • 餐饮/酒店/旅游/票务
      • 食品/果蔬/饮料/日用
      • 服饰/珠宝/礼品/玩具
      • 摄影/婚庆/家政/生活
      • 运动/健身/体育/器材
      • 学校/教育/培训/科研
      • 美容/保健/医院/医疗
      • 金融/财税/咨询/法律
      • 政府/组织/集团/协会
      • 汽车/物流/交通/搬运
      • 机械/设备/制造/仪器
      • 化工/环保/能源/材料
      • 农业/畜牧/养殖/宠物
      • 其他模版
      • IT/软件/信息/互联网
    • 手机模板►
      • 手机APP模板
      • 微信小程序模板
      • wap
    • 网站模板►
      • joomla模板
      • Drupal模板
      • z-blog模板
      • EyouCms模板
      • Bootstrap模板
      • 帝国cms模板
      • CmsEasy模板
      • MetInfo模板
      • 购物商城模板►
        • Shopify主题
        • PrestaShop主题
      • 后台模板
      • 纯HTML模板
      • ecshop模板
      • phpwind模板
      • pbootcms模板
      • phpcms模板
      • wordpress模板
      • discuz模板
    • 教程►
      • 织梦教程
      • Discuz教程
      • WordPress教程
      • Phpcms教程
      • Phpwind教程
      • ECShop教程
      • Joomla教程
      • Drupal教程
      • zblog教程
      • EyouCMS教程
      • 帝国cms教程
      • MetInfo教程
      • CmsEasy教程

      弹窗标题

      这是一条网站公告,可在后台开启或关闭,可自定义背景颜色,标题,内容,用户首次打开关闭后不再重复弹出,此处可使用html标签...