在 WordPress 中默認情況下是無法實現熱門文章的,目前比較通用的實現熱門文章有兩種辦法:一是實現使用 wp-postviews 插件的方式實現,但是這種方式在使用了緩存插件會失效。二是採用偽熱門方法,什麼是偽熱門,就是不是通過靠點擊數來實現,而是通過評論數來實現。顯然這不是真正的熱門文章列表。我們要通過點擊數來提取熱門文章列表。下面我們採用非插件非評論的方式來實現熱門文章列表。
一、首先我們需要創建一個函數來記錄文章瀏覽次數並以一個自定義字段保存起來。粘貼下面的代碼到 functions.php 內:
<pre>function wpb_set_post_views($postID) {
$count_key = 'wpb_post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
}else{
$count++;
update_post_meta($postID, $count_key, $count);
}
}
//為了確保計數的精準度,剔除頭部產生的預備代碼
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);</pre>
接下來我們要做的是讓每篇文章知道你在計數,所以我們需要把下面的代碼粘貼進文章循環中:
<pre>wpb_set_post_views(get_the_ID());</pre>
如果你在使用子主題或明瞭一點,那麼需要使用 wp_head hook 在頭部添加 tracker 。為了做到這點,需要把下面的代碼添加到 functions.php 中:
<pre>function wpb_track_post_views ($post_id) {
if ( !is_single() ) return;
if ( empty ( $post_id) ) {
global $post;
$post_id = $post->ID;
}
wpb_set_post_views($post_id);
}
add_action( 'wp_head', 'wpb_track_post_views');
完成了上面的工作後,每次有用户訪問,自定義字段就會更新瀏覽次數。
注意: 如果你使用了緩存插件,上面的技術不起作用如 W3 Total Cache 就會失效, 這個緩存插件採用的是局部緩存的技術,因此可以通過修改下面代碼來其左右:
<pre><!-- mfunc wpb_set_post_views($post_id); --><!-- /mfunc -->
現在較酷的事情就是可以按瀏覽次數進行排序了,也可以顯示瀏覽次數:
二、顯示瀏覽次數
把下面的代碼粘貼到 functions.php 文件中:
<pre>function wpb_get_post_views($postID){
$count_key = 'wpb_post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
return "0 次";
}
return $count.' 次';
}
然後把下面的代碼粘貼到 single.php 文件需要顯示的地方:
<pre>wpb_get_post_views(get_the_ID());
三、按瀏覽次數顯示熱門文章,可以採用下面的代碼:
<pre><?php $popularpost = new WP_Query( array( 'posts_per_page' => 4, 'meta_key' => 'wpb_post_views_count', 'orderby' => 'wpb_post_views_count', 'order' => 'DESC' ) ); while ( $popularpost->have_posts() ) : $popularpost->the_post(); the_title(); endwhile; ?>