当前所在位置: 首页>>百科全书

WordPress代码实现最近浏览历史功能

发布时间:2025-10-22 16:57:06 本站作者 【 字体: 】 浏览:85 次

这个方法不需要使用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,也就会出现多余的浏览历史,若是右键新窗口打开则不会,目前还不知道如何解决。


上一篇:WordPress最新文章添加new标志

下一篇:详解:WordPress移除头部不必要的元素标签

最新发布
PS4Slim变7吋掌机!大神改造视觉PG街头涂鸦实机展示

PS4Slim变7吋掌机!大神改造视觉PG街头涂鸦实机展示

PS4Slim变7吋掌机!大神改造视觉PG街头涂鸦实机展示
随着掌机市场持续升温,一位改装大神成功将PS4 Slim改造成7吋OLED掌机,并公开结合PG街头涂鸦视觉风格的实机展示画面,迅速吸引PG电子玩家关注。该设备可稳定运行主机内容,续航约3小时,并对主板结构与散热系统进行深度重构,搭配独立风扇与实时温控设计,确保试玩过程顺畅稳定。7 吋OLED屏幕带来更出色的画面表现,提升PG...
PPT文字怎么转换成SmartArt图形?PPT文字转为SmartArt图形的方法

PPT文字怎么转换成SmartArt图形?PPT文字转为SmartArt图形的方法

PPT文字怎么转换成SmartArt图形?PPT文字转为SmartArt图形的方法
PPT文字怎么转换成SmartArt图形?SmartArt是一项图形功能,可以快速、轻松、有效地传达信息,如果你的PPT中如果有多段文字并列显示,那么可以将其转换为SmartArt图形,下面我们来看看这篇PPT文字转为SmartArt图形的方法吧。具体操作如下:打开PPT,建立空白演示文稿。在幻灯片中插入文本框,文本框内有多个...
PPT如何制作彩色色块拼接字?PPT彩色色块拼接字制作教程

PPT如何制作彩色色块拼接字?PPT彩色色块拼接字制作教程

PPT如何制作彩色色块拼接字?PPT彩色色块拼接字制作教程
PPT如何制作彩色色块拼接字?PPT是款十分专业且实用的文档演示软件,近期有用户想要对PPT内的文字进行重新设计,将其制作成彩色色块拼接字,那么应该如何操作呢?不清楚具体步骤的朋友们可以来看看下面这篇教程。打开PPT,建立空白文稿。点击【插入】—【文本框】,单击鼠标,输入一个文字。选择一种字体,...
PPT如何绘制三线表格?PPT制作三线表的方法

PPT如何绘制三线表格?PPT制作三线表的方法

PPT如何绘制三线表格?PPT制作三线表的方法
PPT如何绘制三线表格?在我们日常PPT文档的编辑中,我们会添加各种表格来丰富文档内容,近期有用户想要在PPT中制作三线表,那么应该如何操作呢?不清楚具体步骤的朋友们,可以跟着下面这篇教程来操作。打开PPT,建立空白幻灯片。点击【插入】—【表格】,得到默认样式的表格。在表格中录入文字和数据。...