WP-PostViews 是一款很受欢迎的文章浏览次数统计插件,记录每篇文章展示次数、根据展示次数显示历史最热或最衰的文章排行、展示范围可以是全部文章和页面,也可以是某些目录下的文章和页面。本文还介绍了一些隐藏的功能,例如按照文章次数排序全站文章的功能。

到后台安装插件那里搜索 WP-PostViews 就可以下载该插件,具体过程不再赘述。

使用方法

启用插件后,后台会出现一个新的菜单:设置 (Settings)-> PostViews 。访问这里就可以配置 WP-PostViews 的工作方式。具体怎么用,请看下面的图示,看图之前需要知道的一些事情:

  • WP-PostViews 工作原理:每刷新一个页面,如果计数有效,则写数据库更新展示次数,展示次数用 custom fields 记录。
  • 设置生效的前提:需要将插件提供模板标签 the_views() 写到模板中 (index.php 、 single.php 或者 page.php 等),该标签要写在循环 (loop) 内。
  • 设置中关于 the_views() 的输出控制是全局设置,比如指定显示次数后面的文字是 「人围观」,那么不管在哪里调用 the_views(),都会输出类似 100 人围观的字样,而不是 100 人关注之类的。

下面看图,点击可查看大图

WP-PostViews设置指南

如何展示最热门或者最冷门的文章

WP-PostViews 提供了一个 widget 小工具,上面图示中也有提到,启用这个 widget,设置好标题、显示文章数目、显示文章的类型以及是否显示某些目录下的文章,就可以启用。

Statistics Type 设置

  • 显示热门文章:Most Viewed
  • 显示冷门文章:Least Viewed
  • 显示某些目录下的热门文章:Most Viewed By Category
  • 显示某些目录下的冷门文章:Least Viewed By Category

WordPress 的 Widget 支持多个实例,因此你可以在同一个页面放置多个 Views 小工具,同时展示最热和最冷文章,或者同时展示不同目录下的最热文章。

关于 the_views() 标签

既然 the_views() 是该插件的灵魂函数,多唠叨两句也无妨,先看 the_views() 的参数

1
2
3
4
5
6
7
<?php the_views($display = true, $prefix = '', $postfix = '', $always = false) ?>
//$display - 直接显示还是作为字符串返回
//$prefix - views 前面的内容
//$postfix - views 后面的内容
//$always - 是否总是显示 (与后台设置中的 display options 相关
//如果该项为真,则 display options 无论如何设置都没用)

比较有用的两个参数是 $prefix 和 $postfix,例如给 the_views() 加一个 span 标签

1
the_views(true, '<span class="views">','</span>');

输出结果为

1
<span class="views">20 views</span>

当然你可以在模板中调用时写成

1
<span class="views"><?php the_views(); ?></span>

如何直接获取展示次数

如果你想动态设置展示次数后面的文字,例如在标题下面,需要展示为 「20 次围观」,另一个位置只想显示成 20,不要后面的文字。怎么办?

最近单的方法是直接获取展示次数,这样后面是什么文字你可以随便写,不需要通过后台设置来控制。

前面说过 WP-PostViews 用 custom field 存储展示次数,这个 custom field 叫做」views「,直接获取 views 的值就可以了。

方法一:在 loop 中获取。

1
2
$post_views = intval(post_custom('views'));
echo $post_views,__(' your text');

方法二:获取任意文章的展示次数,是否在 loop 中无所谓

1
2
3
<?php $post_views = get_post_meta(1, 'views', true);
       echo $post_views,__(' your text');
?>

上面的代码显示 ID 为 1 的 post 的展示次数

更改主循环排序,按照文章展示次数浏览

WP-PostViews 还自带了排序功能,通常首页展示的文章是按照发布时间来排序的,你可知道只需要在 url 中添加一些参数就可以改变排序。例如

按照访问次数由多到少排序,尝试这样访问你的网站

1
http://yourdomain.com/?v_sortby=views

按照访问次数由少到多排序,添加这样的参数

1
http://yourdomain.com/?v_sortby=views&v_orderby=asc

只要启用了 WP-PostViews,你的网站就自动获得了这种排序浏览的方式本站启用了该插件,你可以访问下面的地址测试。

http://www.solagirl.net/?v_sortby=views

http://www.solagirl.net/?v_sortby=views&v_orderby=asc

 

本博客更换主题后就禁用了 WP PostViews 插件,所以无法看到效果,请自行安装测试。

如果不想这种不美观的地址被搜索引擎收录,在链接里加上 rel=」nofollow」 即可。

WP-PostViews API

WP-PostViews 定义的函数也可以单独调用,它提供的 views 小工具就是调用这些函数工作的。

1
2
3
4
5
6
<?php get_least_viewed($mode = '', $limit = 10, $chars = 0, $display = true) ?>
//显示最冷门文章
//$mode: post | page | both (相当于 widget 中的 Statistics Type 设置)
//$limit: 显示多少篇文章
//$chars: 标题长度
//$display: 为 true 则直接显示,否则作为字符串返回
1
2
<?php get_most_viewed($mode = '', $limit = 10, $chars = 0, $display = true) ?>
//显示最热门文章
1
2
<?php get_least_viewed_category($category_id = 0, $mode = '', $limit = 10, $chars = 0, $display = true) ?>
//显示某个或某些目录下最冷门文
1
2
<?php get_most_viewed_category($category_id = 0, $mode = '', $limit = 10, $chars = 0, $display = true) ?>
//显示某个或某些目录下最热门文章
1
2
<?php get_most_viewed_tag($tag_id = 0, $mode = '', $limit = 10, $chars = 0, $display = true) ?>
//显示指定标签下的最热门文章
1
2
<?php get_least_viewed_tag($tag_id = 0, $mode = '', $limit = 10, $chars = 0, $display = true) ?>
//显示指定标签下的最冷门文章
1
2
<?php get_totalviews(); ?>
//显示全站文章总共被浏览过多少次

结语

虽然不用代码也可以实现计数功能,但 Sola 仍然推荐使用 WP-PostViews 插件来计数,原因嘛,该插件其实是非常透明的,所有的数据都可以直接调用,定制化非常方便,而且兼容 WP SuperCache 缓存插件,自带全站文章排序功能,试问这些功能自己来写,真的就能比这个插件节省内存和 CPU 资源吗。未必,而且方便性会大打折扣。

这是一款强大的插件,更灵活的使用方法等着你来发掘。