您所在的位置: 首页 > 健宇学院 > 网站技术 > wordpress调用访客最近浏览过的文章

wordpress调用访客最近浏览过的文章

调用最近浏览过的文章,比较蛋疼的功能,原理是通过读取浏览器cookie文件,调用显示最近(360天)被访问过的10篇文章 ,需要注意的是,该功能不是统计所有浏览者最近查看过的文章,并没有写进数据库中,每个访客都有自己独有的浏览清单。

将下面代码添加到主题functions.php文件的最后:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
/* 可选参数: */
$zg_cookie_expire = 360; // cookie过期时间,默认值是360天
$zg_number_of_posts = 10; // 显示篇数,默认值是10。
$zg_recognize_pages = 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 . "\">". $zg_title_out->post_title . "</a></li>\n";
            }
        }
    } else {
    }
    echo '</ul>';
}

add_action('get_header','zg_lwp_header');
?>

调用方法,在侧边sidebar模版或者正文single模版适当位置加入下面代码;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php wp_reset_query();
                   if(is_single()){?>
            <?php if (function_exists('zg_recently_viewed')): if (isset($_COOKIE["WP-LastViewedPosts"])) { ?>
            <div class="s_box m10_t">
                <div class="s_box_t"></div>
                <div class="s_box_c">        
                     <div class="title">
                         <div class="name"><h2>您最近浏览过的文章</h2></div>
                     </div>
                     <div class="s_box_cont biaoqian">
                          <?php zg_recently_viewed(); ?>
                      </div>    
                  </div>
                 <div class="s_box_b"></div>
            </div>
            <!-- end s_box -->
             <?php } endif; ?>
             <?php } ?>

健宇的调用代码就是上面这样的,大家可以自己根据自己的样式进行调用,其中:


1
2
<?php wp_reset_query();
                   if(is_single()){?>

这段代码是判断是否在文章页,不是就不显示。

嘻嘻,效果图:

wordpress调用访客最近浏览过的文章

请尊重我们的辛苦付出,未经允许,请不要转载 健宇工作室 的文章,鄙视各种无耻的采集行为!

健宇工作室分享区  YY教学频道号:63565426

相关日志:

wordpress调用访客最近浏览过的文章:等您坐沙发呢!

给我留言

24 + 72 = 两数相加后,请输入答案