Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress发布视图计数不同_Php_Wordpress - Fatal编程技术网

Php Wordpress发布视图计数不同

Php Wordpress发布视图计数不同,php,wordpress,Php,Wordpress,我遇到了后视图计数的问题。 主页上显示的帖子被浏览了16次,但当我进入单个帖子时。我只看了10张。在计数方面,更新似乎有点延迟 我正在使用CloudFlare服务。但这不应该是问题的原因。 怀疑是缓存问题。但我不知道如何解决它。 有谁遇到过和我一样的问题,有什么解决办法吗 这是我在function.php中找到的源代码 if ( !function_exists( 'getPostViews' ) ) { function getPostViews( $postID ){

我遇到了后视图计数的问题。 主页上显示的帖子被浏览了16次,但当我进入单个帖子时。我只看了10张。在计数方面,更新似乎有点延迟

我正在使用CloudFlare服务。但这不应该是问题的原因。 怀疑是缓存问题。但我不知道如何解决它。 有谁遇到过和我一样的问题,有什么解决办法吗

这是我在function.php中找到的源代码

    if ( !function_exists( 'getPostViews' ) ) {
    function getPostViews( $postID ){
        $count_key = 'post_views_count';
        $count = get_post_meta($postID, $count_key, true);

        if($count==''){
            delete_post_meta($postID, $count_key);
            add_post_meta($postID, $count_key, '0');
            return "0";
        }
        return $count. __('','color-theme-framework');
    }
}

if ( !function_exists( 'setPostViews' ) ) {
    function setPostViews($postID) {
    if (!current_user_can('administrator') ) :
        $count_key = 'post_views_count';
        $count = get_post_meta($postID, $count_key, true);
        if($count==''){
            $count = 0;
            delete_post_meta($postID, $count_key);
            add_post_meta($postID, $count_key, '0');
        }else{
            $count++;
            update_post_meta($postID, $count_key, $count);
        }
    endif;
    }
}

if ( !function_exists( 'posts_column_views' ) ) {
    function posts_column_views($defaults){
        $defaults['post_views'] = __( 'Views' , 'color-theme-framework' );
        return $defaults;
    }
}

if ( !function_exists( 'posts_custom_column_views' ) ) {
    function posts_custom_column_views($column_name, $id){
        if( $column_name === 'post_views' ) {
            echo getPostViews( get_the_ID() );
        }
    }
}

add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);

这是我用来在我的网站中显示帖子视图的代码。请注意,管理员视图不计算在内,如果有人在12小时内访问同一帖子,则第二个视图不计算在内。仅当此人在12小时后再次访问页面时,才会注册第二次查看计数。因此,这是一种更准确的统计帖子浏览量的方法

if ( ! function_exists( 'pietergoosen_get_post_views' ) ) :

function pietergoosen_get_post_views($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return 0;
   }
   return $count;
}

endif;

// function to count views.
if ( ! function_exists( 'pietergoosen_update_post_views' ) ) :

function pietergoosen_update_post_views($postID) {
    if( !current_user_can('administrator') ) {
        $user_ip = $_SERVER['REMOTE_ADDR']; //retrieve the current IP address of the visitor
        $key = $user_ip . 'x' . $postID; //combine post ID & IP to form unique key
        $value = array($user_ip, $postID); // store post ID & IP as separate values (see note)
        $visited = get_transient($key); //get transient and store in variable

        //check to see if the Post ID/IP ($key) address is currently stored as a transient
        if ( false === ( $visited ) ) {

            //store the unique key, Post ID & IP address for 12 hours if it does not exist
           set_transient( $key, $value, 60*60*12 );

            // now run post views function
            $count_key = 'post_views_count';
            $count = get_post_meta($postID, $count_key, true);
            if($count==''){
                $count = 0;
                delete_post_meta($postID, $count_key);
                add_post_meta($postID, $count_key, '0');
            }else{
                $count++;
                update_post_meta($postID, $count_key, $count);
            }
        }
    }   
}

endif;

remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
现在只需在需要显示计数的地方添加以下代码

<div class="readercount">
                    <?php $views = pietergoosen_get_post_views(get_the_ID());
                        if(pietergoosen_get_post_views(get_the_ID()) == 1) {  
                            printf( __( '%d Reader have read this post.', 'pietergoosen' ) , $views );
                        } else {  
                            printf( __( '%d Readers have read this post.', 'pietergoosen' ) , $views );  
                        }  
                    ?>
            </div>
pietergoosen_update_post_views(get_the_ID());

显示用于post的代码count@PieterGoosen已包含源代码=DThanks以供共享。有这个听起来很棒。我认为这并不能解决我上面提到的问题。查看次数不同于主页和单个页面。我怀疑这是缓存问题@皮特古森