1. 程式人生 > >wordpress點選排行的完美實現

wordpress點選排行的完美實現

對於wordpress文章點選統計及排行榜的功能,使用純粹的手寫程式碼去實現實在是太繁複了,因此絕大多數的人都會使用WP-PostViews統計外掛來進行實現。子寒互動視覺也不例外,但是問題又出現了,這款外掛並不能實現某一時間段內的點選排行,比如說:我們想實現30天內點選排行榜,這款外掛就無法實現了,這也就導致了文章點選排行榜內始終都是那麼幾篇文章,就像是本站的點選排行中有些文章已經突破了20000+的點選量了,但是有些文章因為始終沒有機會上排行榜而點選量始終徘徊在1000左右甚至更少。
這樣的不人性化的功能看起來比較像現實中的那句:有錢的的越來越有錢,沒錢的越來越沒錢 – –
顯然這樣的排行對於一個站點來說並沒有太大的實際用處,對於增加使用者的粘度並沒有多大積極的作用。
很多大型的站點在做文章點選排行時都會給這個排行一個時間限制,以便使這個排行榜可以經常的自動更換,比如:一週排行、一月排行甚至24小時內點選排行等。作為一個個人站點,點選量並不會更新的太快,因此我們僅僅使用月度排行,也就是說顯示30天內的文章點選排行,過了30天這個排行就會自動重新整理了。
要想實現這個想法並不難,只要在functions.php

檔案中新增一段程式碼就可以了,本程式碼來源於萬戈,有興趣的朋友可以去他那裡轉轉,畢竟也是名博之一,很多東西都很有料的。
請看下面具體的實現步驟吧!
1.首先要安裝並開啟WP-PostViews統計外掛,沒有統計咋能做排行?這一點強調似乎有點多餘了 – –
2.開啟主題包中的functions.php檔案,然後將下面的一大段程式碼全部丟進去:

  1. //本文程式碼為30天內點選排行榜
  2. //請將此程式碼放在functions.php檔案的<?php和?>之間的位置
  3. //編碼時請選擇專業的編碼工具
  4. function mostViewedPostList($mode = $limit = 10, $chars
     = 0, $display = true) {
  5.     global $wpdb$post;
  6.     $views_options = get_option(‘views_options’);
  7.     $where = ;
  8.     $temp = ;
  9.     $output = ;
  10.     if(!emptyempty($mode) && $mode != ‘both’) {
  11.         $where = “post_type = ‘$mode'”;
  12.     } else {
  13.         $where = ‘1=1′;
  14.     }
  15.     $mostViewedPostList
     = $wpdb->get_results(“SELECT DISTINCT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date > ‘” . date(‘Y-m-d’, strtotime(‘-30 days’)) . “‘ AND $where AND post_status = ‘publish’ AND meta_key = ‘views’ AND post_password = ” ORDER  BY views DESC LIMIT $limit”);
  16.     if($mostViewedPostList) {
  17.         foreach ($mostViewedPostList as $post) {
  18.             $post_views = intval($post->views);
  19.             $post_title = get_the_title();
  20.             if($chars > 0) {
  21.                 $post_title = snippet_text($post_title$chars);
  22.             }
  23.             $post_excerpt = views_post_excerpt($post->post_excerpt, $post->post_content, $post->post_password, $chars);
  24.             $post_content = get_the_content();
  25.             $temp = stripslashes($views_options['mostViewedPostList_template']);
  26.             $temp = str_replace(“%VIEW_COUNT%”, number_format_i18n($post_views), $temp);
  27.             $temp = str_replace(“%POST_TITLE%”$post_title$temp);
  28.             $temp = str_replace(“%POST_EXCERPT%”$post_excerpt$temp);
  29.             $temp = str_replace(“%POST_CONTENT%”$post_content$temp);
  30.             $temp = str_replace(“%POST_URL%”, get_permalink(), $temp);
  31.             $output .= $temp;
  32.         }
  33.     } else {
  34.         $output = ‘<li>N/A</li>’.“\n”;
  35.     }
  36.     if($display) {
  37.         echo $output;
  38.     } else {
  39.         return $output;
  40.     }
  41. }

做完上一步後,我們只需要在需要顯示30天內點選排行榜的地方新增以下程式碼就可以了:

  1. <?php
  2. if (function_exists(‘get_mostViewedPostList’) & function_exists(‘mostViewedPostList’)){
  3.     echo ‘<ul>';
  4. //10為呼叫的篇數,根據自己實際情況修改
  5.     mostViewedPostList(‘post’,10);
  6.     echo ‘</ul>';
  7. }
  8. ?>

方法就介紹到這裡,其實24小時內文章排行榜及一週點選排行都可以根據上面的程式碼思路去修改,在此暫時就不先去擴充套件了,大家有興趣的話自己去捯飭吧!