調用訪客最近瀏覽過的文章

調用最近瀏覽過的文章,比較蛋疼的功能,原理是通過讀取瀏覽器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 插件,如果嫌折騰麻煩,可以直接安裝并啟用該插件,使用更為方便,可以直接將該功能拖到側邊小工具中。

 

 
  • 本文由 米粒在線 發表于 2013年5月8日20:59:43
  • 轉載請務必保留本文鏈接:http://www.bjmhhq.com/7346.html
SEO相關

網站速度很慢?使用 WordPress 短時緩存(Transients)來優化數據庫查詢和 HTTP 響應!

每個人都想要一個速度很快的網站,網站速度越快,用戶停留和點擊頁面或購買產品的時間就越長,加快網站速度的方法之一是開啟緩存,而緩存背后的邏輯就是存儲信息,更具體一點說,就是找到一個比連接數據庫更快的存儲...

發表評論

匿名網友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
確定

拖動滑塊以完成驗證