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

2013年04月16日18:32:23 34 2,599

WordPress最近浏览过的文章

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

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

  1. <?php
  2. /* 可选参数: */
  3. $zg_cookie_expire = 360; // cookie过期时间,默认值是360天
  4. $zg_number_of_posts = 10; // 显示篇数,默认值是10。
  5. $zg_recognize_pages = true;
  6. /* 此行后不要编辑 */
  7. function zg_lwp_header() {
  8. if (is_single()) {
  9. zg_lw_setcookie();
  10. } elseif (is_page()) {
  11. global$zg_recognize_pages;
  12. if ($zg_recognize_pages === true) {
  13. zg_lw_setcookie();
  14. }
  15. }
  16. }
  17. function zg_lw_setcookie() {
  18. global$wp_query;
  19. $zg_post_ID = $wp_query->post->ID;
  20. if (! isset($_COOKIE["WP-LastViewedPosts"])) {
  21. $zg_cookiearray = array($zg_post_ID);
  22. } else {
  23. $zg_cookiearray = unserialize(preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", stripslashes($_COOKIE["WP-LastViewedPosts"])));
  24. if (! is_array($zg_cookiearray)) {
  25. $zg_cookiearray = array($zg_post_ID);
  26. }
  27. }
  28. if (in_array($zg_post_ID, $zg_cookiearray)) {
  29. $zg_key = array_search($zg_post_ID, $zg_cookiearray);
  30. array_splice($zg_cookiearray, $zg_key, 1);
  31. }
  32. array_unshift($zg_cookiearray, $zg_post_ID);
  33. global$zg_number_of_posts;
  34. while (count($zg_cookiearray) > $zg_number_of_posts) {
  35. array_pop($zg_cookiearray);
  36. }
  37. $zg_blog_url_array = parse_url(get_bloginfo('url'));
  38. $zg_blog_url = $zg_blog_url_array['host'];
  39. $zg_blog_url = str_replace('www.', '', $zg_blog_url);
  40. $zg_blog_url_dot = '.';
  41. $zg_blog_url_dot .= $zg_blog_url;
  42. $zg_path_url = $zg_blog_url_array['path'];
  43. $zg_path_url_slash = '/';
  44. $zg_path_url .= $zg_path_url_slash;
  45. global$zg_cookie_expire;
  46. setcookie("WP-LastViewedPosts", serialize($zg_cookiearray), (time()+($zg_cookie_expire*86400)), $zg_path_url, $zg_blog_url_dot, 0);
  47. }
  48. function zg_recently_viewed() {
  49. echo '<ul class="viewed_posts">';
  50. if (isset($_COOKIE["WP-LastViewedPosts"])) {
  51. $zg_post_IDs = unserialize(preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", stripslashes($_COOKIE["WP-LastViewedPosts"])));
  52. foreach ($zg_post_IDsas$value) {
  53. global$wpdb;
  54. $zg_get_title = $wpdb->get_results("SELECT post_title FROM $wpdb->posts WHERE ID = '$value+0' LIMIT 1");
  55. foreach($zg_get_titleas$zg_title_out) {
  56. echo"<li><a href=\"". get_permalink($value+0) . "\" title=\"". $zg_title_out->post_title . "\">". $zg_title_out->post_title . "</a></li>\n";
  57. }
  58. }
  59. } else {
  60. }
  61. echo '</ul>';
  62. }
  63. add_action('get_header','zg_lwp_header');
  64. ?>

由于代码高亮转换后代码可能执行有误,这里提供 源文件下载

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

  1. <?php if (function_exists('zg_recently_viewed')): if (isset($_COOKIE["WP-LastViewedPosts"])) { ?>
  2. <h2>Last viewed posts</h2>
  3. <?php zg_recently_viewed(); ?>
  4. <?php } endif; ?>

 

注:调用并不十分准确,有一定误差,效果看本站正文最后。

最后说明一下,代码提取自:Last Viewed Posts 插件,如果嫌折腾麻烦,可以直接安装并启用该插件,使用更为方便,可以直接将该功能拖到侧边小工具中。

 

weinxin
我的微信
分享交流WordPress经验与技巧,关注前端设计与网站制作。仅用于功能演示。
Begin主题购买
Begin主题购买

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:34   其中:访客  31   博主  3

    • 斌果 1

      沙发

      • 我爱上QQ 6

        代码控,强大,对于需要该功能的人来说很不错~

        • Win7en乐园 8

          这个貌似很实用。看一下

          • wmtimes 7

            这个可以有。

            • Louis Han 6

              浏览器禁用cookies追踪了

              • 常阳时光 4

                这功能还不错。。。
                不过像我的话就很少会回头去看文章了。

                • 岳璐璐 4

                  鸟哥,我为什么添加后,刷新IE后会说function出错。

                    • 知更鸟 Admin

                      @岳璐璐 复制的代码可能有问题,下载本文提供的源文件

                        • 岳璐璐 4

                          @知更鸟 @知更鸟 : 您提供的下载链接为:QTTabBar 2.0.zip,打开后不是function文件中的内容呀,是不是鸟哥上传错误了。如果我说错了,问鸟哥,提供的附件如何用?

                            • 知更鸟 Admin

                              @岳璐璐 嗯,下载链接已修正,里面就是上面贴的代码,使用方法参照本文

                            • 岳璐璐 4

                              @知更鸟 希望鸟哥能直接提供下function.php文件

                          • 锅炉软化水设备 3

                            鸟哥就是牛啊,这么好用的代码也放出来。

                            • 岳璐璐 4

                              setcookie(“WP-LastViewedPosts”, serialize($zg_cookiearray), (time()+($zg_cookie_expire*86400)), $zg_path_url, $zg_blog_url_dot, 0);

                              这行还是会报错。好吧,我承认我玩不了这些代码。

                              • 狼人 1

                                再一次表示关注!!!

                                • 清新物语 0

                                  暂时没想到用在什么地方,不过大部分人不会回头看浏览过的文章吧!

                                  • 耕博 1

                                    不错,这个很有用。已经成功移植在自己的主题中了

                                    • 每日精华帖 3

                                      鸟哥,我的摘要里面还是有乱码,解决好久了,都不行。您看下。。。

                                        • 知更鸟 Admin

                                          @每日精华帖 虽然你去掉我的版权链接,不过看你都叫哥了,就告诉你:
                                          之所以有乱码是因为主机问题,至于主机空间缺少什么组件或者需要设置什么,哥还真想不起来了…

                                            • 氪星人 1

                                              @知更鸟 膜拜鸟哥 不解释!

                                              • 每日精华帖 3

                                                @知更鸟 鸟哥,谢谢您。版权链接的什么东西,我都不懂。这个博客是朋友给我的,拿来就是这个样子。

                                            • 两天 6

                                              前排啊~~~

                                              • W3Cshare 2

                                                有机会试一试

                                                • 画室之家 1

                                                  这个我喜欢,支持鸟哥,给力呀!我都是照葫芦画瓢的用着!不过我不会一行显示两条!

                                                  • 雅典娜 0

                                                    这个还真不好弄!

                                                    • 贝游记 1

                                                      现在都注重隐私,记录别人浏览内容容易引起反感。

                                                      • 骷髅猫博客 5

                                                        这个功能很不错,一会试试。。感谢鸟哥。

                                                        • xftalk 1

                                                          这个功能有时候还是很实用的,有空试试。

                                                          • 木木 1

                                                            我用你代码 怎么显示的的不一样 我是显示的一行 我也用你的主题 是不是要在css 里加点什么

                                                            • 黄徳炜 2

                                                              貌视很强大

                                                              • 网赚兼职吧 1

                                                                不错。。

                                                                • 翩翩飞舞 1

                                                                  这个功能很不错,收藏了

                                                                  • 瘦腿精油哪个牌子好 1

                                                                    这一串代码真有意思

                                                                    • helsinglee 1

                                                                      好功能