WP超级缓存停止发布元数据的更新

时间:2017-07-05 作者:Elidrissi simo

对于一个定制的“最受欢迎的帖子”小部件,我创建了一个创建/更新帖子元的函数,以保存帖子视图的数量,并在single.php 样板

在我安装WP Super Cache之前,它工作得很好,视图数量保持不变。

激活WP超级缓存后,如何使用此功能?

这是包含在single.php:

function save_views($postID){
  $metakey = \'postsViews\';
  $views = get_post_meta($postID,$metakey,true);
  $count = (empty($views) ? 0 : $views);
  $count++;
  update_post_meta($postID,$metakey,$count);
}
remove_action(\'wp_head\',\'adjacent_posts_rel_link_wp_head\',10,0);

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

使用WP超级缓存时,插件会为模板生成静态HTML文件,这意味着您正在运行的任何PHP代码只有在生成或重新生成缓存页面时才会运行。

因此,如果需要在缓存后面的每个页面加载上触发PHP代码,则需要使用AJAX.

因此,对于您的用例,您需要在函数文件中添加两个函数。首先,您需要将发出AJAX请求的Javascript添加到所有帖子的页脚。这将做到:

function my_count_views_script() {
    if ( is_single() ) :
        ?>
        <script>
            jQuery.post({
                url:     \'<?php echo admin_url( \'admin-ajax.php\' ); ?>\',
                action:  \'my_count_views\',
                post_id: <?php the_ID(); ?>
            });
        </script>
        <?php
    endif;
}
add_action( \'wp_footer\', \'my_count_views_script\' );
这会向管理员ajax发送一个请求。php文件,其中包含正在查看的帖子的post\\u id以及我们要使用它执行的操作。

要计算此视图的数量,您需要告诉admin ajax。php在收到请求时运行的代码my_count_views 行动你可以通过勾住wp_ajax_my_count_views (为登录用户处理)和wp_ajax_nopriv_my_count_views 对于已注销的用户:

function my_count_views() {
    if ( isset( $_POST[\'post_id\'] ) && $_POST[\'post_id\'] ) {
        $post_id = intval( $_POST[\'post_id\'] );
        $views = intval( get_post_meta( $post_id, \'postsViews\', true ) ) ?: 0;
        $views += 1;

        update_post_meta( $post_id, \'postsViews\', $views );
    }

    wp_die();
}
add_action( \'wp_ajax_my_count_views\', \'my_count_views\' );
add_action( \'wp_ajax_nopriv_my_count_views\', \'my_count_views\' );

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在