SEO只是外表
技术才是我的追求

Woredpress插件WP-PostViews不计数的原因及解决办法

我用wordpress仿了一个国外的模板,在本地调试一切正常,安装WP-PostViews插件后却发现WP-PostViews无法计数,无论我怎样刷新文章,阅读量还是0。于是百度了一轮,发现WP-PostViews不计数的原因有3个:

1、你处于登录状态,WP-PostViews不计算的浏览次数

WP-PostViews默认只有访客访问才计算阅读量,你如果处于登录wordpress的状态的话当然怎样刷新也没有效果啦。解决办法:退出登录或者把Count Views From设置成:Everyone。

2、安装缓存插件,网站被静态化了

如果你的网站安装了WP Super Cache、WP Rocket等缓存插件,网页被静态化了,你当然看不到浏览量的变化了。其实WP-PostViews还是在计算浏览量,只是前台网页被静态了看不到动态变化而已,当你重新更新网站缓存时,你就会看到文章一直积累的浏览量了。

当你使用缓存的插件的时候,会在根目录的配置文件wp-config.php中自动添加:

define("WP_CACHE", true);

WP-PostViews插件会判断wp-config.php是否开启 WP_CACHE,如果没有开启就使用PHP计数,如果开启了就使用ajax计数。

这个过程是WP-PostViews自动判断的,我们不需要任何设置,如果你不是通过缓存插件缓存网站的,需要手动开启WP_CACHE,不然WP-PostViews真的就不能统计浏览量了。

3、wordpress主题的头部模板文件header.php没有添加wp_head函数

我自己模仿的主题header.php中就是没有添加

<?php wp_head(); ?>

所以WP-PostViews插件无法算数。我们分析一下原因:

我们查看WP-PostViews插件的代码文件wp-postviews.php,找到以下代码:

### Function: Calculate Post Views
add_action('wp_head', 'process_postviews' );
function process_postviews() {

process_postviews就是PHP计数的功能函数,从add_action('wp_head', 'process_postviews' )可以看出process_postviews函数挂钩子挂到wp_head函数上,简单地我们可以理解为wp_head函数运行一次,就计数一次。

这样就说明如果没有调用wp_head函数,WP-PostViews就无法计数。

提示:大部分wordpress插件都是需要wp_head函数才能运行的,不使用wp_head函数需要三思。

解决办法有两个:

1、添加wp_head函数

在主题的头部文件header.php添加上:

<?php wp_head(); ?>

这是最简单的办法,如果真的不想使用wp_head函数,只能修改WP-PostViews插件的代码。

2、修改wp-postviews.php代码

打开后台,点击插件下”编辑” ,在”选择要编辑的插件”选择WP-PostViews,编辑wp-postviews.php文件,在文件内容找到:

add_action('wp_head', 'process_postviews' );

改成

add_action('get_header', 'process_postviews' );

原理很简单,我们把钩子挂到其他函数上就行。

注意:这个被挂钩子的函数一定要在每个主题的文件中都要被使用才行,get_header、get_footer函数都是满足要求的

未经允许不得转载:棋哥SEO博客 » Woredpress插件WP-PostViews不计数的原因及解决办法

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址