Question to say "I can!"

快三直播:真正解决wp-postviews在开启wp-super-cache下不计数的问题

2013-12-02

这个问题我查了网上所有的帮助文件:

包括:

都无法成功解决,是大发老师给了最终的解决办法。

感谢大发的解答,所以,有问题,先通过自己解决,这样才能进入最核心的问题,也可以排除其他的可能存在的问题,获得的解答才是最根本有效的。

解决问题的原文:大发——真正解决wp-postviews在开启wp-super-cache下不计数的问题

鉴于wp-postviews和wp-super-cache都是热门插件,所以两个插件冲突不计数的问题已经是个老问题了,但是网上的解决方案并没有真正解决问题,虽然计数了,但是在缓存更新之前是不会更新浏览数的,相信很多强迫症的朋友根本就不能忍受这个问题。到最后只能放弃其中的一个。当然,还有压根就不计数的朋友,这类朋友基本是因为长得太丑。

wp-super-cache是在apache的环境下工作,nginx需要重写配置rewrite规则。如何配置不在本文讨论范围内。

说下wp-super-cahce的原理吧,是把所有的页面转化成静态html,然后再通过30X定向,绕后php直接访问静态html来加速,在有新评论和新文章时会更新缓存,而wp-postviews的原理是每次访问给meta加1,启用cache后不调用php文件了,所以自然不会计数。于是插件的作者通过ajax来增加计数,但是不知道为啥,有时候js不能正确加载,于是手动修改下吧。

编辑wp-postviews.php,在插件目录下哦,找到下面的这段

if ($should_count && defined('WP_CACHE') && WP_CACHE) {
            // Enqueue and localize script here
            wp_enqueue_script('wp-postviews-cache', plugins_url('postviews-cache.js', __FILE__), array('jquery'), '1.64', true);
            wp_localize_script('wp-postviews-cache', 'viewsCacheL10n', array('admin_ajax_url' => admin_url('admin-ajax.php', (is_ssl() ? 'https' : 'http')), 'post_id' => intval($post->ID)));
        }

替换成下面这样,也就是去掉了条件判断。

wp_enqueue_script('wp-postviews-cache', plugins_url('postviews-cache.js', __FILE__),true);
wp_localize_script('wp-postviews-cache', 'viewsCacheL10n', array('admin_ajax_url' => admin_url('admin-ajax.php', (is_ssl() ? 'https' : 'http')), 'post_id' => intval($post->ID)));

然后重新生成下缓存,就OK了。

这时候每次点击的时候后台会更新显示数,但是前台不会更新,下面我们来解决这个问题。

可以通过AJAX和DOM操作来解决。把下面的代码添加到wp-postviews.php

add_action('wp_ajax_nopriv_show_postview', 'show_postview');
add_action('wp_ajax_show_postview', 'show_postview');
function show_postview(){
    $views_options = get_option('views_options');
    $ID = $_POST["bigfa_view"];
    $custom_fields = get_post_custom($ID);
    $my_custom_field = $custom_fields['views'];
    foreach ( $my_custom_field as $key => $value ) {
        echo str_replace('%VIEW_COUNT%', number_format_i18n($value), $views_options['template']);
    }
    die;
}

这段添加到postviews-cache.js

jQuery(document).ready(function() {
    var ajax_data = {
        action: "show_postview",
        bigfa_view: viewsCacheL10n.post_id
    };
    $.post(viewsCacheL10n.admin_ajax_url, ajax_data,
    function(data) {
        $('.show-view').html(data);
    });
    return false;
});

默认的调用方法是

<?php if(function_exists('the_views')) {the_views();} ?>

现在替换为

<span><?php if(function_exists('the_views')) {the_views();} ?></span>

这时候我们发现,文章页是正常计数的而且实时刷新,但是首页还是不行啊,这个没办法了,不过可以通过设置wp-super-cache,不缓存首页,这样就完美解决问题了。。

Goodbye,O'Connor.

作者:admin | Categories:优化维护 | Tags: 、、

6条评论

  1. 郑州seo说道:

    求这个博客wp皮肤。。

  2. 左岸读书说道:

    修改之前记得先把这个插件停用,修改完成之后再进行启用。

  3. 未知说道:

    这类朋友基本是因为长得太丑。

  4. Pang说道:

    好办法啊 加载js

  5. 张戈说道:

    粗略看了下,最后的替换应该是 才对吧,否则你js去修改的时候如何找得到目标show-view呢。。。

  6. 张戈说道:

    貌似代码被吞了,补充下:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

  • 男人不安全了?日本读心美女机器人,你咋想的它全知道! 2019-05-03
  • 重庆市永川区:“1+8+X”模式探索基层人民调解新路子 2019-05-03
  • 春节我在岗:爸妈,儿子在军营给您们拜年了 2019-04-22
  • 传统文化,在中国文化里,居住是衡量一个家庭生活的基本因素。 2019-04-15
  • 俄韩就铺设途经朝鲜的天然气管道恢复磋商 2019-04-15
  • 经营者要想“我心换你心”,就要未雨绸缪,让不诚信的诱惑少一点,如此才能在市场中生存下来。反过来说,承担不起亏损就关门歇业,是否也是一种不诚信呢? 2019-04-11
  • 江西省能源集团公司党委副书记胡运生等2人被调查 2019-04-11
  • 乌鲁木齐:这个端午,他们的假日叫“坚守” 2019-03-29
  • 中国电信安康分公司60家智慧家庭便民服务中心盛大开业中国电信安康-最新活动 2019-03-28
  • 中心城区核心片组完成签约清零任务 2019-03-28
  • (Dos sesiones) Legislativo nacional de China concluye sesión anual Spanish.xinhuanet.com 2019-03-28
  • 西班牙一旅游公司官网竟把台湾和香港列为“国家” 2019-03-27
  • 【一周反腐】广东、重庆等地多名厅级干部被查处 2019-03-27
  • 任志强:房价走势并不是不可预测市场 开炮 2019-03-26
  • 世界醉美10条街道,亚洲只有中国上榜! 2019-03-23
  • 637| 253| 552| 518| 854| 69| 554| 391| 940| 808|