WP Super Cache静态化页面后使能WP Postviews

Posted by Harid2010 - Oct - 30 留个言

wp-postviews新版本(如1.6)已经与Wp-super-cache兼容,不过请留意header.php里是否开了wp_head(),以让插件能添加AJAX代码。

—————————-2012年5月11日更新————————-

星期九昨天晚上装了一个显示文章浏览次数的插件——WP-Postviews。这是一个大名鼎鼎的插件,不过它与一些缓存插件不能和平共处,如安装了WP Super Cache,则它不能实时显示计数情况。我在安装WP-Postviews后,还遇到了一系列其它的问题,像卸载了WP Super Cache与DB Cache Reloaded后,还是无法正常启用该插件,使它计数等。经过一番GG后,我还是找到了问题的根源。

首先下载WP Postviews插件,最新的版本是1.5,这个版本已经不与WP Super Cache冲突了,虽然文章浏览次数在刷新页面后并没有增加,但是WP Postviews插件在后台还是在计数的,只是得删除当前缓存后才能显示。 同时,星期九还有一个插件是DB Cache Reloaded,用来减少数据库查询次数的,有人说它与WP Postviews也不兼容,但是经查看,我可以肯定它的最新版本与Wp Postviews也是不冲突的,完全兼容。注意,另外还有几款插件可以实现相同功能, 至于为什么选择WP Postviews,可以去这里瞧瞧:传送门>>

要让文章浏览次数显示还得在合适的地方调用该插件的函数。我是在主题的index.php、single.php、archive.php三个文件里添加了调用代码,调用代码如下:

接下来要解决文章浏览次数在不卸载缓存插件的前提下让其实时显示的问题

这里有一个插件,叫Ajax_the_views,Wordpress官网的描述是这样的:

The Ajax_the_views WordPress plugin extends WP-PostViews so that the number of post views is displayed via Ajax, meaning it will be accurate even if a caching plugin is being used.

也就是它能通过AJAX显示当前的浏览次数,这样即使开启了缓存也可以显示了。

对于一般的主题,安装好这一个插件也就能正常计数了,但是如果曾经对主题做过大幅改动,尤其在header.php里优化过,删除了”<?php wp_head(); ?>“这一句的朋友就可能还是什么都不显示。星期九就遇到了这一问题,因为我曾经在header.php的<head></head>里做过很大的改动,并删除了上面说的这一句(因为它加载的一串代码并没有多大的用)。

解决方法就是把这一句话再添加回来,也就是将下面的代码置于</head>前面:

现在试一下的话应该可以显示“0 views”了。前面我说了,这一句话会在网页源文件的<head></head>里加上一些没有多大用的东西。可见超人流水帐的一篇博文,传送门>>。而且,它会让一些插件可以在<head></head>里插入一些自己的东西,如JS、CSS加载呀之类的。我相信有很多人都将一些常用插件的CSS、JS与主题的style.css、JS文件分别合并在一起了的,星期九就是如此。如果做过这类的CSS、JS文件合并,则可能不再需要让插件将这些文件的加载项插入<head></head>里面,这时可以修改插件文件来实现,或者就是删除上面的这一句话。

也就是说,一旦我们再将这句话添加回来,那么就只能通过修改那些合并过CSS、JS的插件的文件了,在其文件里删除相应的加载语句。

另外还需要注意的一个地方是,添加回来这句“<?php wp_head(); ?>”,则<head></head>里会加载Wordpress自带的JQuery库,也就是会出现如下的一句话:

这个文件有72KB之巨,而且我发现完全可以用谷歌的JQuery库(谷歌的是54KB)来替代它。所以我曾经在优化<head></head>的时候就用谷歌的JQuery库取代了它(怎么加载谷歌的这个库,见:链接平移与侧边滑动导航栏),现在它又回来了,怎么去掉它呢?

打开/wp-includes/script-loader.php文件,查找“jquery.js”字符串,大概在第119行能找到这么一句:

$scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', false, '1.4.2');

我们不能将这一句直接删除或者注释掉,因为在后台的时候,必须得用到这个库(可以在这用谷歌的库来替换,不过不推荐),那么加个判断就可以了,让这一句只在后台的时候运行,将其改为:

if(is_admin()){
	$scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', false, '1.4.2');
}

至此,一切 ok !

   声明:本文采用 BY-NC-SA 协议进行授权 | 星期九
   原创文章转载请注明:转自《WP Super Cache静态化页面后使能WP Postviews

Comments(54) Leave comments
  1. Gravatar
    互联网战 Google Chrome Google Chrome 18.0.1025.152 Windows Windows 7
    五月 11th, 2012 at 09:55  | #1

    博主,wp-postviws1.6版主与wp super cache冲突吗?我用了ajax the views之后感觉显示的浏览人数还是比较少,有时候有好几个人评论了,但是浏览次数却为1

    • Gravatar Harid  @  五月 11th, 2012 at 22:04 replied.

      @互联网战, wp-postviews1.6与wp-super-cache已经不冲突的,当然,必须在header里面开wp_head(),让wp-postviews插件的AJAX语句能够执行。

      • Gravatar 互联网战  @  五月 11th, 2012 at 22:06 replied.  | #2

        @Harid, 先帮你点点右边的广告,嘿嘿。我后来看了wp-postviews的源码,它在wp-head里加入了ajax统计了,确实能够实时统计,缺点是不能实时显示,显示的是缓存时的数字,如果缓存更新,则能够显示更新后的。我现在使用了ajax-the-views,可以实时显示

        • Gravatar Harid  @  五月 12th, 2012 at 12:14 replied.

          @互联网战, 不实时更新也没有关系啊,只要它在后台确实在更新就行。我已经卸了ajax-the-views了,虽然这个插件是轻量级插件,但是毕竟多了一个插件。
          PS: 谢谢您帮我点广告。

  2. Gravatar
    J.C. Google Chrome Google Chrome 15.0.874.121 Windows Windows 7
    十一月 23rd, 2011 at 19:53  | #3

    请问这句话加在index single archive具体哪里?

  3. Gravatar
    J.C. Google Chrome Google Chrome 15.0.874.120 Windows Windows 7
    十一月 18th, 2011 at 09:25  | #4

    这个插件安装后还是无法统计

    • Gravatar Harid  @  十一月 18th, 2011 at 10:35 replied.

      @JC, 你的页面源码中,在<head>对中貌似没有调用WP-postviews的JQuery代码。你启用wp-head()函数了吗?

      • Gravatar J.C.  @  十一月 18th, 2011 at 10:40 replied.  | #5

        @Harid, 我看了你的网站代码,貌似你的页面没有开启super cache啊。在没有cache的情况下我的页面views可以正常统计

        • Gravatar Harid  @  十一月 18th, 2011 at 10:52 replied.

          @J.C., 我用的WP-super-cache,启用了的。我看下你的源代码去。

        • Gravatar Harid  @  十一月 18th, 2011 at 10:56 replied.

          @J.C., 你检查下在你的footer.php文件的最后有没有这一句:<?php wp_footer(); ?>

  4. Gravatar
    祥子 Mozilla Firefox Mozilla Firefox 4.0.1 Windows Windows XP
    六月 10th, 2011 at 15:27  | #6

    不错的方法

    • Gravatar Harid  @  六月 10th, 2011 at 15:54 replied.

      @祥子, 我现在还在用这个方法 。

  5. Gravatar
    yesureadmin Google Chrome Google Chrome 9.0.570.0 Windows Windows 7
    十二月 5th, 2010 at 15:44  | #7

    DB cahce相对来说我还是觉得db cache重要点,WP Postviews用不用都无关紧要,这个统计很不准的说,感觉

    • Gravatar Harid  @  十二月 5th, 2010 at 20:09 replied.

      @yesureadmin, 我都用了的,DB Cache 已经不适合现在版本的WP了,我用的是DB-Cache Reload

  6. Gravatar
    阿鼎 Google Chrome Google Chrome 7.0.517.41 Windows Windows 7
    十一月 1st, 2010 at 19:53  | #8

    统计插件,我没用过,我插件太多了,等需要再弄上!

    • Gravatar Harid  @  十一月 1st, 2010 at 20:22 replied.

      @阿鼎, 我曾经因为插件的缘故一度让博客打不开,所以我现在也很怕插件的数量上去。

  7. Gravatar
    ZDAvril Google Chrome Google Chrome 6.0.472.63 Windows Windows 7
    十一月 1st, 2010 at 14:25  | #9

    虽然没用过。但是听说用这个插件好像有弊端。 ❓

    • Gravatar Harid  @  十一月 1st, 2010 at 14:47 replied.

      @ZDAvril, 你是说“WP Postviews”还是“Wp Super Cache”?我没听说过。

      • Gravatar ZDAvril  @  十一月 1st, 2010 at 15:15 replied.  | #10

        @Harid, WP Postviews。我也是听说的。具体也不清楚。所以一直不敢装。

        • Gravatar Harid  @  十一月 1st, 2010 at 15:27 replied.

          @ZDAvril, 之所以听到别人这么说,可能是因为它会更改数据库里的表吧,不过应该问题不大,很多人都在用。

          • Gravatar ZDAvril  @  十一月 1st, 2010 at 16:47 replied.  | #11

            @Harid, 嗯。好像是的。貌似还有什么缓存问题。

  8. Gravatar
    若蘭 Internet Explorer Internet Explorer 1.5 Unknow Os Unknow Os
    十月 31st, 2010 at 14:43  | #12

    还在动态化。

Pages:
38 + 68 =  (required)
comment_ad

 NOTICE1: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!

 NOTICE2: 请申请gravatar头像(http://en.gravatar.com),木有头像的会显示为“小怪物”头像,将难以通过审核!

分享按钮