4

私はワードプレスに取り組んでおり、プラグインのワードプレスの人気のある投稿を使用しており、この問題に直面しています。

ブログのカテゴリリストページまたはインデックスページで、訪問者がページを閲覧した回数を表示するにはどうすればよいですか。プラグインがサイドバーに同じ情報を表示するために使用しているこの情報はすでに存在します。同じプラグインデータを使用してブログページのページビュー数を表示する方法がわかりません。

私はこれを見つけようとしましたが、私が望むものを正確に得ることができませんでした。

plsはこれを行う方法をアドバイスしますか?

私が使用しているプラ​​グインはhttp://wordpress.org/extend/plugins/wordpress-popular-posts/です。

4

3 に答える 3

7

プラグインなしで簡単に実行できます。

投稿ビューをカウントするには、最初に、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();
?>

ハッピーコーディング

于 2017-02-21T05:39:35.907 に答える
2

wpp_get_viewsプラグインによって提供されると呼ばれる関数があります。ビューカウントを表示する投稿/ページのIDがわかっている場合は、そのIDをパラメーターとして関数を呼び出すだけです。例えば:

$count = wpp_get_views($post->ID); 
于 2012-10-18T11:41:39.630 に答える
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;}
于 2020-07-04T07:58:20.377 に答える