也想出现在这里? 联系我们

如何通过Cookie记录来查看WordPress网站的用户搜索历史?

作者 : 小编 本文共2687个字,预计阅读时间需要7分钟 发布时间: 2020-09-17 共1.9K人阅读
也想出现在这里? 联系我们

其实采用Cookies可以记录用户在网站的搜索记录,我们需要记录并输出用户的搜索记录,并添加一个清空搜索历史功能,如何通过Cookie记录来查看WordPress网站的用户搜索历史?

将用户搜索记录写入 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( !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=”‘.%20$home_url_slash%20.%20′?s=’%20.%20$result%20.%20′”>’. 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.2kss.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. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » 如何通过Cookie记录来查看WordPress网站的用户搜索历史?

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
织梦模板使用说明
你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html

发表评论

Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 蜀ICP备14022927号-1
开通VIP 享更多特权,建议使用QQ登录