学做网站培训课程介绍

当前位置:

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

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

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

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

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

相关教程

  • WordPress是一种功能强大的建站系统,它广泛用于制作各种类型网站,例如:个人博客、企业官网、门户网站等等。它使用简单,对于零基础新手学习做网站
  • 很多网站都有这样的功能,可以显示自己在这个网站上浏览了哪些页面,这就是用户浏览记录。如下图:那么怎么制作这样的用户浏览记录列表功能呢?下面
  • 置顶文章是WordPress建网站常用的文章提升重要性的方法。Wordpress设置置顶文章也比较简单,在网站后台就可以设置文章置顶。但有些对于WORDPRESS程序
  • 在使用WordPress建网站时,如果后台文章比较多的情况下,会使用分页功能来制作分页按钮。除了这种常规的分页按钮之外,还有一种分页就是下拉无限加载
  • 以下为学做网站论坛关于“wordpress网站如何同步生成百度小程序”讲解视频教程。百度小程序是百度推出的智能应用,百度本身也在花大力气推广百度小程
  • 现在很多人想做外贸网站,外贸网站很多都是英文网站,那么怎么做英文网站呢?制作英文网站建议使用WordPress程序。Wordpress程序功能比较强大,可以制
  • 我们在做WordPress中文多条件多重搜索时,往往需要调用某些自定义字段的值,只要管理员在后台的文章给某个字段添加了值,都要调用出来。这样就不用自
  • 在制作网站用户中心功能时,往往需要显示用户发布的文章列表,这时就要通过SQL查询,将指定ID的用户发布的文章全部查询出来。在Wordpress获取指定ID
  • 对于做付费内容的网站,授权是非常常见的。常用的授权方法有二种:一种是通过远程域名授权。只有通过了授权的域名才可以正常使用资源;二种是通过授
  • 在开发WordPress插件时,往往需要不限制在某个特定位置展示,而由使用者来决定显示的位置。常用的方法就是通过短代码的方式来调用插件。这样用户创建