现在的位置: 首页 > 互联网络 > WP相关 > 正文

免插件实现WordPress文章阅读次数

2013-10-11 06:57 WP相关 ⁄ 共 4940字 ⁄ 字号 暂无评论

一般为Wordpress文章添加阅读次数统计,会用到wp-postviews或者wp-postviews-plus插件,这里分享两段不用插件实现Wordpress文章阅读次数的代码,供大家参考。

代码一:

一、首先将下面代码加到主题functions模版文件中:

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 View";  
    }  
    return $count.' Views';  
}  
function setPostViews($postID) {  
    $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);  
    }  

二、接下来将下面代码加到主题single模版主循环的中:

<?php setPostViews(get_the_ID()); ?> 
也就是类似这句的下面

<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
三、最后,将调用显示阅读次数代码加到single模版适当的位置:

<?php echo getPostViews(get_the_ID()); ?> 
如果想在其它位置显示阅读次数,可以将下面代码也加到functions模版中:

remove_action('wp_head','adjacent_posts_rel_link_wp_head',10,0); 
 

原文:Track post views without a plugin using post meta

代码二:

一、同样将下面代码加到主题functions模版文件中:

//postviews  
function get_post_views ($post_id) {  
 
    $count_key = 'views';  
    $count = get_post_meta($post_id, $count_key, true);  
 
    if ($count == '') {  
        delete_post_meta($post_id, $count_key);  
        add_post_meta($post_id, $count_key, '0');  
        $count = '0';  
    }  
 
    echo number_format_i18n($count);  
 
}  
 
function set_post_views () {  
 
    global $post;  
 
    $post_id = $post -> ID;  
    $count_key = 'views';  
    $count = get_post_meta($post_id, $count_key, true);  
 
    if (is_single() || is_page()) {  
 
        if ($count == '') {  
            delete_post_meta($post_id, $count_key);  
            add_post_meta($post_id, $count_key, '0');  
        } else {  
            update_post_meta($post_id, $count_key, $count + 1);  
        }  
 
    }  
 
}  
add_action('get_header', 'set_post_views'); 
二、将调用显示阅读次数代码加到single模版适当的位置:

<?php get_post_views($post -> ID); ?> views 
调用显示阅读次数代码也可以加到其它模版文件的适当位置。

另外,HotNews主题想不用插件统计阅读次数并同时实现近期热门文章调用,需要将下面代码加加到functions模版上述代码的前面:

### WP-PostViews  
if(!function_exists('get_most_viewed')) {  
    function get_most_viewed($mode = '', $limit = 10, $chars = 0, $display = true) {  
        global $wpdb;  
        $views_options = get_option('views_options');  
        $where = '';  
        $temp = '';  
        $output = '';  
        if(!empty($mode) && $mode != 'both') {  
            $where = "post_type = '$mode'";  
        } else {  
            $where = '1=1';  
        }  
        $most_viewed = $wpdb->get_results("SELECT DISTINCT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date < '".current_time('mysql')."' AND $where AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER BY views DESC LIMIT $limit");  
        if($most_viewed) {  
            foreach ($most_viewed as $post) {  
                $post_views = intval($post->views);  
                $post_title = get_the_title($post);  
                if($chars > 0) {  
                    $post_title = snippet_text($post_title, $chars);  
                }  
 
                $temp = stripslashes($views_options['most_viewed_template']);  
                $temp = str_replace("%VIEW_COUNT%", number_format_i18n($post_views), $temp);  
                $temp = str_replace("%POST_TITLE%", $post_title, $temp);  
                $temp = str_replace("%POST_EXCERPT%", $post_excerpt, $temp);  
                $temp = str_replace("%POST_CONTENT%", $post->post_content, $temp);  
                $temp = str_replace("%POST_URL%", get_permalink($post), $temp);  
                $output .= $temp;  
            }             
        } else {  
            $output = '<li>'.__('N/A', 'wp-postviews').'</li>'."\n";  
        }  
        if($display) {  
            echo $output;  
        } else {  
            return $output;  
        }  
    }  
}  
 
### 按时间获得最受欢迎文章  
function get_timespan_most_viewed($mode = '', $limit = 10, $days = 7, $display = true) {  
    global $wpdb, $post;      
    $limit_date = current_time('timestamp') - ($days*86400);   
    $limit_date = date("Y-m-d H:i:s",$limit_date);    
    $where = '';  
    $temp = '';  
    if(!empty($mode) && $mode != 'both') {  
        $where = "post_type = '$mode'";  
    } else {  
        $where = '1=1';  
    }  
    $most_viewed = $wpdb->get_results("SELECT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date < '".current_time('mysql')."' AND post_date > '".$limit_date."' AND $where AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER  BY views DESC LIMIT $limit");  
    if($most_viewed) {  
        foreach ($most_viewed as $post) {  
            $post_title = get_the_title();  
            $post_views = intval($post->views);  
            $post_views = number_format($post_views);  
            $temp .= "<li><a href=\"".get_permalink()."\">$post_title</a>".__('', 'wp-postviews')."</li>";  
        }  
    } else {  
        $temp = '<li>'.__('N/A', 'wp-postviews').'</li>'."\n";  
    }  
    if($display) {  
        echo $temp;  
    } else {  
        return $temp;  
    }  

作者:知更鸟

给我留言

留言无头像?