专注云服务商活动
网站运营运维笔记

无需要插件可以实现WordPress阅读数量的统计和热门文章调用

在我们维护WordPress网站的时候,能尽量的不用插件就可以减少数据库的承载。这里我们可以通过无需插件实现很多的功能,包括阅读计数统计或者热门文章的调用。

设置文章阅读数量函数:

function bzg_set_post_views() {
    global $post;
    if( ! isset( $post->ID ) || ! is_singular()  ) return;
    $cookie_name = 'views_' . $post->ID;
    if( isset( $_COOKIE[$cookie_name] ) ) return;
    $post_views = (int) get_post_meta( $post->ID, 'views', true );
    if( empty( $post_views ) ) {
        $post_views = 1;
    } else {
        $post_views = $post_views + 1;
    }
    update_post_meta( $post->ID, 'views', $post_views );
    setcookie( $cookie_name, 'yes', ( current_time( 'timestamp' ) + 86400 ) );
}
add_action( 'get_header', 'bzg_set_post_views' );

代码中86400是指同一浏览器访问24小时内不计数,这样就能一定程度上避免刷阅读数。

读取文章阅读数量函数:

function bzg_post_views($post_ID = '') {
    global $post;
    $post_id = $post_ID;
    if( ! $post_id ) $post_id = $post->ID;
    if( ! $post_id ) return;
    $post_views = (int) get_post_meta( $post_id, 'views', true );
    if( empty( $post_views ) ) $post_views = 0;
    return $post_views;
}

以上代码放到主题文件functions.php中,在需要显示文章阅读数的地方调用:

php echo bzg_post_views()

获取阅读数最多的文章:

function bzg_get_most_viewed( $limit = 10 ) {
    $args = array(
        'posts_per_page' => $limit,
        'order' => 'DESC',
        'post_status' => 'publish',
        'orderby'    => 'meta_value_num',
        'meta_key' => 'views',
        'date_query' => array(
            array(
                'after'  => '-360day',
            )
        ),
    );
    $str = implode('&', $args);
    $postlist = wp_cache_get('hot_post_' . md5($str), 'beizigen');
    if(false === $postlist) {
        $postlist = get_posts( $args );
        wp_cache_set('hot_post_' . md5($str), $postlist, 'beizigen', 86400);
    }
    foreach ( $postlist as $post ) {
        echo '<li><a href="' . get_permalink($post->ID) . '" rel="bookmark">' . $post->post_title . '</a></li>';
    }
    wp_reset_postdata();
}

注意函数中的-360day,是指输出360天内的文章,函数调用方法:

php bzg_get_most_viewed(8);

 

投上你的一票
域名主机商优惠信息推送QQ群: 627775477 获取商家优惠推送,禁言。
赞(0)
未经允许不得转载:老左笔记 » 无需要插件可以实现WordPress阅读数量的统计和热门文章调用