【WordPress】投稿一覧ページに記事毎のアクセス数を表示する方法

2019年4月14日WordPress

WordPress管理画面での記事一覧ページに記事毎のアクセス数を表示する方法になります

※この方法は人気表示プラグイン「WordPress Popular Posts」のデータを利用していますので「WordPress Popular Posts」がインストール・有効化されている事が前提となります

表示サンプル

今回追加しているカラムはアスセス数になります

上段がトータルアクセス数、下段に過去7日間の日別アクセス数を表示しています

記事毎のアクセス数を表示サンプル

アスセス数表示用のカラムを追加

manage_posts_columnsを使って投稿一覧ページのカラム一覧を取得、アクセス数表示用のカラムを追加します

functions.php

/文字数表示用のカラムを追加
add_filter('manage_posts_columns', function($columns){
            $columns['view'] = "アクセス数";
            return $columns;
});

任意の新しい配列のキー名と値(表示時、カラムのタイトルになります)を設定します

※WordPress固有のキー名(author、categories 、tags、comments、date)とは重複しない様にしましょう

アクセス数を取得して表示

manage_posts_custom_columnにて追加したカラムの場合に「WordPress Popular Posts」のデータからアクセス数を取得して表示します

manage_posts_custom_columnは1ページに表示される記事の数だけループします

functions.php

add_action('manage_posts_custom_column',function($column_name, $post_id){

  //データベース情報をグローバル変数として取得
  global $wpdb;
  //タイムゾーンを設定
  date_default_timezone_set('Asia/Tokyo');

  if($column_name == 'view'){

    //トータルアクセス数を表示
    echo '<p>'.wpp_get_views( $post_id, 'all', false ).'</p>';

    //日別アクセス数を表示
    for ($i=0; $i >= -6; $i--) {
      $wpdb->get_results("SELECT id FROM wp_popularpostssummary WHERE postid = $post_id and view_date = '".date('Y-m-d', strtotime($i.' day'))."'");
      echo $wpdb->num_rows;
      if($i != -6){echo '|';}
    }
  }

},10,2);

wpp_get_views()はトータル(all)の他にも過去一ヶ月(month)過去一週間(week)などのデータも取得可能です

日別のデータはwpp_get_views()では取得できないので「WordPress Popular Posts」用のデータベースから取得しています

マルチサイトの場合は「wp_popularpostssummary」ではなく「wp_サイトID_popularpostssummary」にて取得可能です
サイトIDは「global $blog_id;」にて取得できます

また、文字数を表示する方法も紹介していますので、合わせるとちょっとしたSEOツールになるかと思います

【WordPress】投稿一覧ページに記事毎の文字数を表示する方法 | ONE NOTE

2019年4月14日WordPressWordPressカスタマイズ

Posted by ヨウスケ