您好!欢迎来到黑域吧资源网!本站资源24小时自动发货,请放心选购,一次付费,终身下载,售后请联系客服!

通过Cookie记录WordPress用户的搜索历史

作者 : 黑域吧 本文共2706个字,预计阅读时间需要7分钟 发布时间: 2020-09-16 共32人阅读

最近需要记录每个用户在WordPress网站上的搜索历史,考虑到需求比较简单,决定采用Cookies来实现。在这里简单分享下方法,有些细节就需要自己去修改和完善了。

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

  /**
     * 通过Cookie记录用户搜索记录
     */
    function wpkj_set_recently_searches(){
        //仅在前端搜索页面执行
        if ( is_search() && !is_admin() ) {
            $search_term = get_search_query();
            if( $search_term ) $search_term = trim( $search_term );
            //如果搜索字段不存在或为空,不继续
            if( !$search_term || $search_term === '') return;
            //检查并设置搜索历史数组
            $recently_searches = array();
            if(isset($_COOKIE['wpkj_recently_searches'])) {
                $recently_searches = explode(',', $_COOKIE['wpkj_recently_searches'], 20);
            }
            if(!in_array( $search_term, $recently_searches)){
                $recently_searches[] = $search_term;
            }
            //设置cookie为30天
            setcookie('wpkj_recently_searches', implode(',', $recently_searches), current_time('timestamp') + (86400*30), "/");
        }
    }
    add_action( 'wp', 'wpkj_set_recently_searches', 20 );

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

获取并输出用户的搜索记录

  /**
     * 获取用户最近搜索记录
     */
    function wpkj_get_recently_searches( $limit = 10, $title = false ){
        $recently_searches = array();
        if(isset($_COOKIE['wpkj_recently_searches'])) {
            $recently_searches = explode(',', $_COOKIE['wpkj_recently_searches']);
            //将搜索记录倒序
            $recently_searches = array_reverse($recently_searches);
            if( !emptyempty($recently_searches) ) {
                $html = '<div class="recently-searches">';
                if( $title ) $html .= '<h2 class="searches-title recently-searches-title">'. htmlspecialchars($title) .'</h2>';
                $html .= '<ul class="recently-searches-ul">';
                $home_url_slash = get_option('home') . '/';
                $i = 1;
                foreach( $recently_searches as $result ) {
                    $html .= '<li class="search-item"><a href="'. $home_url_slash . '?s=' . $result . '">'. htmlspecialchars($result) .'</a></li>';
                    $i++;
                }
                $html .= '</ul>';
                $html .= '<div class="recently-searches-del">'.__( 'Clear search history', THEME_SLUG ).'</div>';
                $html .= '</div>';
                return $html;
            }
        }
    }

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

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

清空当前用户搜索历史

这里通过js方式实现:

    //添加一个js函数用于删除cookie
    function delCookie(name) {
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval = getCookie(name);
        if (cval != null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
    }
    //很抱歉,这里采用的是jquery操作
    jQuery(document).ready(function($) {
        $(".recently-searches-del").on("click", function() {
            //删除cookie
            delCookie("wpkj_recently_searches");
            //隐去搜索历史部分的内容
            $(".recently-searches").fadeOut();
        });
    });

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

    //引入搜索历史js
    function wpkj_recently_searches_scripts() {
        wp_enqueue_script( 'recently_searches', get_template_directory_uri() . 'https://img.22vd.com/assets/js/recently-searches.js', array( 'jquery' ), '', true );
    }
    add_action( 'wp_enqueue_scripts', 'wpkj_recently_searches_scripts' );

请注意下js文件的路径,上面的代码表示我将 recently-searches.js 放在了当前主题的 /assets/js 目录下,你需要根据自己的实际修改这个路径。到这里就OK了。代码还是有可以优化的空间,就靠大家自己折腾了

提示:
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!邮箱:(332547532@qq.com)
2. 分享目的仅供大家学习和交流,请不要用于商业用途!QQ群: 10563080
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请点击右下方联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码请在"下载框架提示方寻找",如遇到无法解压的请联系管理员!
黑域吧资源网 » 通过Cookie记录WordPress用户的搜索历史

发表评论

售后服务:

  • 售后服务范围 1、商业模板使用范围内问题免费咨询
    2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
    3、单价超过200元的模板免费一次安装,需提供服务器信息。
    付费增值服务 1、提供dedecms模板、WordPress主题、discuz模板优化等服务请详询在线客服
    2、承接 WordPress、DedeCMS、Discuz 等系统建站、仿站、开发、定制等服务
    3、服务器环境配置(一般 ¥50-300)
    4、网站中毒处理(需额外付费,500元/次/质保三个月)
    售后服务时间 周一至周日(法定节假日除外) 9:00-23:00
    免责声明 本站所提供的源码等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 332547532@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系作者
开通SVIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡