WordPress代码实现最近浏览历史功能-WordPress开发教程
这个方法不需要使用js,而是利用Cookies记录访客曾经浏览过的文章,展示浏览历史功能。方法很简单 步骤一 首先将下面的代码加入functions.php文件中/* 相关参数: */$
这个方法不需要使用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,也就会出现多余的浏览历史,若是右键新窗口打开则不会,目前还不知道如何解决。
原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/121750

服务项目 | 服务内容 | 收费标准(元) |
---|---|---|
开发定制 | WordPress主题/插件开发定制 | (以最终需求为准) |
主题/插件汉化 | 汉化团队WordPress主题/插件,翻译率95% | (以标的主题/插件的句子数量为准) |
服务器环境配置 | 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 | 100元/次 |
网站托管 | 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 | 标配套餐:1000元/年/站点 高配套餐:联系客服获取 |
网站加速优化 | 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) | 500元/次(仅站内优化200元/次) |
主题配置 | 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 | 英文主题安装 60元/次 汉化主题安装 30元/次 |
HTTPS配置 | HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 | 100元/次 |
网站搬家 | 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 | 标准收费:500元/次 若网站数据量大,需协商 |
网站运维 | 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 | 标准收费:2000元/年 IP 5000以上需协商 |