WordPress代码实现最近浏览历史功能
发布时间:2025-10-22 16:57:06 本站作者 【 字体:大 中 小 】 浏览:103 次
这个方法不需要使用js,而是利用Cookies记录访客曾经浏览过的文章,展示浏览历史功能。方法很简单
步骤一
首先将下面的代码加入functions.php文件中
/* 相关参数: */
$zg_cookie_expire = 360; // cookie过期的时间,默认值是360天
$zg_number_of_posts = 10; // 显示篇数,默认值是10。
$zg_recognize_pages = true; // 页面模板是否也要设置cookies?默认值是true
function zg_lwp_header() {
if (is_single()) {
zg_lw_setcookie();
} else if (is_page()) {
global $zg_recognize_pages;
if ($zg_recognize_pages === true) {
zg_lw_setcookie();
}
}
}
function zg_lw_setcookie() {
global $wp_query;
$zg_post_ID = $wp_query->post->ID;
if (! isset($_COOKIE["WP-LastViewedPosts"])) {
$zg_cookiearray = array($zg_post_ID);
} else {
$zg_cookiearray = unserialize(preg_replace('!s:(d+):"(.*?)";!e', "'s:'.strlen('$2').':"$2";'", stripslashes($_COOKIE["WP-LastViewedPosts"])));
if (! is_array($zg_cookiearray)) {
$zg_cookiearray = array($zg_post_ID);
}
}
if (in_array($zg_post_ID, $zg_cookiearray)) {
$zg_key = array_search($zg_post_ID, $zg_cookiearray);
array_splice($zg_cookiearray, $zg_key, 1);
}
array_unshift($zg_cookiearray, $zg_post_ID);
global $zg_number_of_posts;
while (count($zg_cookiearray) > $zg_number_of_posts) {
array_pop($zg_cookiearray);
}
$zg_blog_url_array = parse_url(get_bloginfo('url'));
$zg_blog_url = $zg_blog_url_array['host'];
$zg_blog_url = str_replace('www.', '', $zg_blog_url);
$zg_blog_url_dot = '.';
$zg_blog_url_dot .= $zg_blog_url;
$zg_path_url = $zg_blog_url_array['path'];
$zg_path_url_slash = '/';
$zg_path_url .= $zg_path_url_slash;
global $zg_cookie_expire;
setcookie("WP-LastViewedPosts", serialize($zg_cookiearray), (time()+($zg_cookie_expire*86400)), $zg_path_url, $zg_blog_url_dot, 0);
}
function zg_recently_viewed() {
echo '<ul class="viewed_posts">';
if (isset($_COOKIE["WP-LastViewedPosts"])) {
$zg_post_IDs = unserialize(preg_replace('!s:(d+):"(.*?)";!e', "'s:'.strlen('$2').':"$2";'", stripslashes($_COOKIE["WP-LastViewedPosts"])));
foreach ($zg_post_IDs as $value) {
global $wpdb;
$zg_get_title = $wpdb->get_results("SELECT post_title FROM $wpdb->posts WHERE ID = '$value+0' LIMIT 1");
foreach($zg_get_title as $zg_title_out) {
echo "<li><a href="". get_permalink($value+0) . "" title="". $zg_title_out->post_title . "">". wp_trim_words($zg_title_out->post_title,15) . "</a></li>n";
}
}
} else {
}
echo '</ul>';
}
add_action('get_header','zg_lwp_header');注意:其中的zg_recently_viewed()即为为输出浏览历史的函数,上面代码最后部分我用wp_trim_words函数对输出的文章标题进行了截断。
步骤二
有了输出函数,我们只要把它添加到自己想要的位置即可,比如侧栏,文章页某个位置,代码如下:
<?php if (function_exists('zg_recently_viewed')): if (isset($_COOKIE["WP-LastViewedPosts"])) { ?>
<h2>Last viewed posts</h2>
<?php zg_recently_viewed(); ?>
<?php } endif; ?>最后是添加样式,根据自己的主题来吧。
特别说明
以上代码源自:last-viewed-posts插件,这个功能有个bug,如果你的主题控制浏览新文章是在新窗口打开的话会出现多余的cookies,也就会出现多余的浏览历史,若是右键新窗口打开则不会,目前还不知道如何解决。
热门推荐
最新发布
支付宝扫雷群禁抢群(2026最新)24小时在线
全网支付宝扫雷群埋雷群禁抢群 全天拉手中介在线微信。全部是微信聊呗以前的群搬过去开的群!QQ2100756172欢迎加入信誉...
office365激活密钥【最新】Office 365永久激活密钥2026年最新激活码
Office365激活密钥是很多用户都在找的,没有密钥激活你的Office365你是无法使用的,下面小编通过一些渠道收集了最新的Office365激活密钥,也是Microsoft365激活密钥分享给大家,需要知道的是Office365激活密钥有一定的时效性,要赶紧使用!不然会过期哦。Office365激活密钥【最新】45H17-8514D-E4758-TH015-4V1510H451-87K0...
office2021最新激活秘钥,2026年最新永久有效正版激活密钥分享
office是我们如今生活中经常用到的电脑软件,但是有不少朋友们的office软件由于没有激活无法正常使用。今天小编就来给大家**分享一下2021最新永久有效正版密钥,这些密钥适用于office365、office专业增强版、office2016等多系列。雨林木风 ghost Win11 64位 超级精简版系统 v2022.06是一款很多用户选择的win11系统,推出之后...
office2021激活工具,2026年office2021激活工具及激活密钥分享
office2021激活工具其实就是我们通用的HEU KMS Activator软件,office2021激活工具是一款支持微软最新办公软件office2021的一键激活工具,它能够迅速而高效地破解产品的所有受限功能,使用户尽享全面的办公体验。该工具兼容性极高,支持多种操作系统,并且除去繁琐的手动激活步骤,让用户轻松完成激活过程。无论是个人用户还...
大家都在看
支付宝扫雷群禁抢群(2026最新)24小时在线
office365激活密钥【最新】Office 365永久激活密钥2026年最新激活码

office2021最新激活秘钥,2026年最新永久有效正版激活密钥分享

office2021激活工具,2026年office2021激活工具及激活密钥分享

Office2024激活密钥分享,2026年Office 2024专业增强版密钥分享

visio 2016 永久激活密钥 visio 2016专业版激活码 正版 visio 2016 零售版产品密钥

office2016专业增强版密钥,office2016专业版激活秘钥分享(亲测可用)

Office2016激活密钥,Office2016专业版/家庭和学生版密钥

2026最新office2016专业版永久激活密钥/序列号,office2016专业版激活秘钥分享推荐

office2016专业增强版永久激活密钥,office2016专业版激活秘钥怎么用

