在WordPress中默认情况下是无法实现热门文章的,目前比较通用的实现热门文章有两种办法:一是实现使用wp-postviews插件的方式实现,但是这种方式在使用了缓存插件会失效。二是采用伪热门方法,什么是伪热门,就是不是通过靠点击数来实现,而是通过评论数来实现。显然这不是真正的热门文章列表。我们要通过点击数来提取热门文章列表。下面我们采用非插件非评论的方式来实现热门文章列表。
代码实现wordpress浏览统计功能:显示文章浏览数一:
在主题文件夹functions.php里 ? 前面添加如下代码实现文章点击次数功能
/* 访问计数 */
function record_visitors()
{
if (is_singular())
{
global $post;
$post_ID = $post-ID;
if($post_ID)
{
$post_views = (int)get_post_meta($post_ID, 'views', true);
if(!update_post_meta($post_ID, 'views', ($post_views+1)))
{
add_post_meta($post_ID, 'views', 1, true);
}
}
}
}
add_action('wp_head', 'record_visitors');
/// 函数名称:post_views
/// 函数作用:取得文章的阅读次数
function post_views($before = '(点击 ', $after = ' 次)', $echo = 1)
{
global $post;
$post_ID = $post-ID;
$views = (int)get_post_meta($post_ID, 'views', true);
if ($echo) echo $before, number_format($views), $after;
else return $views;
}
然后,在文章内容模板single.php里面添加文章点击次数信息,把下面的代码添加到显示的地方就ok了
?phppost_views(,次);?
显示文章浏览数二:
首先也是在functions.php.php文件中在最后面 ? 的前面加入下面的代码:
functioncustom_the_views($post_id,$echo=true,$views='views'){$count_key='views';$count=get_post_meta($post_id,$count_key,true);if($count==''){delete_post_meta($post_id,$count_key);add_post_meta($post_id,$count_key,'0');$count='0';}if($echo)echonumber_format_i18n($count).$views;elsereturnnumber_format_i18n($count).$views;}functionset_post_views(){global$post;$post_id=$post-ID;$count_key='views';$count=get_post_meta($post_id,$count_key,true);if(is_single()||is_page()){if($count==''){delete_post_meta($post_id,$count_key);add_post_meta($post_id,$count_key,'0');}else{update_post_meta($post_id,$count_key,$count+1);}}}add_action('get_header','set_post_views');
代码放好后,保存,然后到主题前端位置添加调用
?phpif(function_exists('custom_the_views'))custom_the_views($post-ID);?非插件获取浏览数最多文章:
无论是wp-postviews插件还是网上的教程获取浏览数最多的文章都是使用sql语句来实现的,非插件其实也是从插件提取出来的,奇芳阁直接使用官方推荐的get_posts,省时省力,把下面的代码放到你想调用的地方,如果你想调整样式加上一些标签然后自己写点css就好了。
ul?php$args=array('posts_per_page'=5,//文章数'meta_key'='views','orderby'='meta_value_num','date_query'=array(array('after'='2monthago',//时间范围)));$postslist=get_posts($args);foreach($postslistas$post):setup_postdata($post);?liahref=?phpthe_permalink();??phpthe_title();?/aspan-?phpif(function_exists('custom_the_views'))custom_the_views($post-ID);//如果安装的是插件就换成插件的调用方法?/span/li?phpendforeach;wp_reset_postdata();?/ul