最新公告
  • 欢迎您光临源库坊,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • WordPress通过Cookie记录用户的搜索历史

    教程开始:

    将用户搜索记录写入Cookie

    /** * 通过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( !empty($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() . '/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. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,默认解压密码为"www.yuankufang.com",如遇到无法解压的请联系管理员!
    源库坊 » WordPress通过Cookie记录用户的搜索历史

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    源库坊
    一个高级程序员模板开发平台
    • 352会员总数(位)
    • 1198资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 1490稳定运行(天)

    提供最优质的资源集合

    赞助本站svip 了解详情