使用WP-PostViews插件统计不了浏览量的问题
本文由发表于5年前 | PHP | 评论数 6 |  被围观 11,938 views+
add_action():wp_head():remove_action()

最近改了下主题,试着运行之后,发现使用WP-PostViews插件不能统计浏览量,在single.php页面中使用了<?php if(function_exists('the_views')) { the_views(); } ?>之后显示的浏览次数一直是0,即使别人浏览过了。

在后台的插件列表中找到WP-PostViews,并点击编辑,打开其源代码,找到了如下函数

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

可以发现这个process_postviews()函数就是统计浏览次数的函数,在这里使用了这样一句代码:

add_action('wp_head', 'process_postviews');

经过在wordpress的帮助文档中找到关于两个函数的说明:

add_action():
http://codex.wordpress.org/Function_Reference/add_action

Hooks a function on to a specific action.

wp_head():
http://codex.wordpress.org.cn/Plugin_API/Action_Reference/wp_head

ttwp_head()/tt is triggered within the tthead/head/tt section of the user's template by the ttwp_head()/tt function. Although this is theme-dependent, it is one of the most essential theme hooks, so it is fairly widely supported.

知道了,这句代码是在wp_head执行时添加自定义的一些动作,这里就是添加了这个统计访问数的函数process_postviews(),为了让这句话能够被执行,需要在wordpress主题程序中添加上wp_head()这个函数,以便能够执行到被添加的process_postviews()函数。

所以解决的方法就是在header.php文件中的<head></head>标签中添加上这个函数:<?php wp_head(); ?>

这样就可以正常统计浏览量了,与之类似的函数还有wp_footer()。

remove_action()

既然有add_action,那么wordpress应该有提供remove_action吧。经过查阅,发现真有这个函数。Add_action是在需要的执行阶段添加自定义的执行代码,那么remove_action就是删除在执行阶段会被默认执行的代码。

比如在head标签中添加了wp_head() 函数,wordpress会生成很多其他的代码,其实有些也没有必要返回给客户端,这样,我们就可以使用remove_action删除掉不必要的执行步骤了,下面是从网上看到的一个优化wp_head()函数而添加的一个代码片段,把以下代码放入到functions.php中即可:

//wp_head()函数优化
remove_action( 'wp_head', 'feed_links_extra', 3 ); // Display the links to the extra feeds such as category feeds
remove_action( 'wp_head', 'feed_links', 2 ); // Display the links to the general feeds: Post and Comment Feed
remove_action( 'wp_head', 'rsd_link' ); // Display the link to the Really Simple Discovery service endpoint, EditURI link
remove_action( 'wp_head', 'wlwmanifest_link' ); // Display the link to the Windows Live Writer manifest file.
remove_action( 'wp_head', 'index_rel_link' ); // index link
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 ); // prev link
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 ); // start link
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 ); // Display relational links for the posts adjacent to the current post.
remove_action( 'wp_head', 'wp_generator' ); // Display the XHTML generator that is generated on the wp_head hook, WP version

不过,在去除这些函数时,还需要考虑自己是否需要用到这些函数哦。比如rsd_link()和wlwmanifest_link()这两个函数是Wordpress为博客客户端软件添加的,如果你的Wordpress使用到了类似 Live Writer这类软件在编写, 就需要这两个函数,其他的函数含义参考上面代码中的注释或者在wordpress官网帮助文档中查找。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/use-wp-postviews-plug-statistics-not-page-views.html
关键字: , ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2012 4/9
文章评论
    6条评论
  1. mengxiangzhijia.com 2012年06月16日10:01:40  #-49楼 回复 回复

    你好,貌似统计不准确

    不知道楼主是否遇到过?

    • arthinking 2012年06月18日02:01:56 回复 回复

      应该是统计的不是IP,而是PV。

  2. 2012年06月30日18:54:36  #-48楼 回复 回复

    不错 wp_head 会调用一堆没用的数据 删掉之后WP-PostViews又不工作
    不过博主的代码 加到functions.php里 又出现乱码 难道我加错位置 直接放在functions.php最后面 还是中间?

    • arthinking 2012年06月30日19:19:22 回复 回复

      都可以的,直接放到functions.php文件中的所有代码后面即可。

      • 2012年06月30日19:23:34 回复 回复

        我加了之后 为什么代码会出现在网页的顶部呢

  3. 求索阁 2014年04月26日04:23:11  #-47楼 回复 回复

    使用了插件DB Cache Reloaded Fix后,postView的计数就不能增加了。

给我留言

有人回复时邮件通知我
PHP的相关文章
随机文章 本月热门 热评
1 Java基础笔记 – 线程的生命周期 线程的状态 优先级和常用方法 2011/10/24
2 操作系统引论之操作系统基础介绍和发展历史过程 2011/6/28
3 Goagent连接超时解决方法,以及如何更流畅的使用Google搜索 2014/6/4
4 马化腾:互联网业的企鹅帝国就是这样造就的 2012/8/25
5 设计模式笔记 – Singleton 单例模式 (Design Pattern) 2011/10/26
6 Struts2的一个和多个文件上传的实现 2011/5/8
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.