在wordpress上显示帖子的视图计数

时间:2012-10-17 12:17:54

标签: wordpress wordpress-plugin wordpress-theming

我正在使用wordpress,并使用插件wordpress热门帖子,并面临这个问题。

如何显示访问者在博客的类别列表页面或索引页面上浏览页面的次数。此信息已经存在,插件使用该信息在侧边栏中显示相同信息,不知道如何使用相同的插件数据在博客页面上显示页面查看次数。

我试图找到这个,但没有得到我想要的。

请告知如何做到这一点?

我使用的插件是http://wordpress.org/extend/plugins/wordpress-popular-posts/

4 个答案:

答案 0 :(得分:1)

插件提供了一个名为wpp_get_views的函数。 如果您知道要显示视图计数的帖子/页面的ID,您只需要使用该ID作为参数调用该函数。例如:

$count = wpp_get_views($post->ID); 

答案 1 :(得分:1)

您可以在没有插件的情况下轻松完成。

要计算帖子视图,首先要做的是将以下代码添加到WordPress主题 functions.php

<?php
/*
 * Set post views count using post meta//functions.php
 */
function customSetPostViews($postID) {
    $countKey = 'post_views_count';
    $count = get_post_meta($postID, $countKey, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $countKey);
        add_post_meta($postID, $countKey, '1');
    }else{
        $count++;
        update_post_meta($postID, $countKey, $count);
    }
}
?>

现在我们将在 single.php 中调用此函数来更新数据库中的计数值。

<?php 
    customSetPostViews(get_the_ID());//single.php
?>

如果我们想要显示帖子视图计数,现在在同一个 single.php 文件中,我们可以使用以下代码:

<?php
    $post_views_count = get_post_meta( get_the_ID(), 'post_views_count', true );
    // Check if the custom field has a value.
    if ( ! empty( $post_views_count ) ) {
        echo $post_views_count;
    }
?>

现在通过帖子查看次数以降序显示所有热门帖子。使用此代码:

<?php//popular post query
    query_posts('meta_key=post_views_count&posts_per_page=5&orderby=meta_value_num&
    order=DESC');
    if (have_posts()) : while (have_posts()) : the_post();
?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php
    endwhile; endif;
    wp_reset_query();
?>

快乐编码

答案 2 :(得分:0)

add_action('init','cr_tbl',55);

function cr_tbl(){

        global $wpdb;
    $table_add_two = $wpdb->prefix."post_view";
    $cat_rating_ddl="
        CREATE TABLE IF NOT EXISTS  `".$table_add_two."` (
          `pvid` INT(11) UNSIGNED AUTO_INCREMENT,
          `ip` varchar(255) NOT NULL,
          `device` varchar(255) NOT NULL,         
          `postid` int(11) NOT NULL,
          `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
          PRIMARY KEY(pvid)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    ";  
    $all_tables = array();
    $mytables=$wpdb->get_results("SHOW TABLES");
    foreach ($mytables as $mytable){
        foreach ($mytable as $t){                   
            $all_tables[]=$t;
        }
    }       
    $sql_one='';
    if(!in_array($table_add_two,$all_tables)){
        $sql_one.=$cat_rating_ddl;
        if(!empty($sql_one)){
            if(!function_exists('wp_should_upgrade_global_tables')){
                require(ABSPATH . 'wp-admin/includes/upgrade.php');
            }
            dbDelta($cat_rating_ddl);
        }       
    }

}

function get_the_user_ip() {

    if(!empty($_SERVER['HTTP_CLIENT_IP'])){
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }else{
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;}

    function add_view_record($pid){
     global $wpdb;
     $ip = get_the_user_ip();    
     $device = (wp_is_mobile())?'mobile':'desktop';         
     $table_name = $wpdb->prefix.'post_view';
     $list = $wpdb->get_results("SELECT * FROM $table_name WHERE postid = $pid and ip = '".$ip."'");        
     if(empty($list)){      
        $wpdb->insert($table_name, 
            array( 
                'ip' => $ip,
                'device' => $device,
                'postid' =>$pid,                
            )
        );                                   
     }}

    function get_view_count($pid){
    $total=0;
    global $wpdb;       
    $table_name = $wpdb->prefix.'post_view';
    $list = $wpdb->get_results("SELECT count(pvid) as total FROM $table_name WHERE postid = ".$pid);        
    if(!empty($list)){         
           $total=$list[0]->total;  
    }       
    return $total;}

答案 3 :(得分:-1)

发布计数

这篇文章指的是点击标题&amp;每次点击进入数据库的商店(postMeta表)