WordPress

WordPressのカスタム投稿一覧に投稿者やブログ閲覧数などのカラムを追加してデータを表示する

WordPressのカスタム投稿タイプでは、デフォルトでは一覧に投稿者の列がありません。それだと、記事ページに投稿者の情報を掲載する、といったことをする場合に不便なので、当方は投稿者を表示するようにしています。また、ブログ閲覧数を出すこともできます。その二つを出す場合を例に方法をご紹介します。

「?」となっている方がいるだろうと思うので補足すると、当方は通常の投稿タイプは使ってません。非表示にしてます。その理由はこちらの記事をご参照ください。

用いるキーとなるWordPress関数とフック

多くの記事はコードだけ載せて、用いているキーとなる関数などの説明がないんですよね。

manage_edit-[カスタム投稿タイプ名]_columns

manage_edit-[カスタム投稿タイプ名]_columnsのフィルターフックにより、指定したカスタム投稿タイプに列を追加することができます。[カスタム投稿タイプ名]と書いているところに、列を追加したいカスタム投稿タイプのスラッグを記載してください。[]は残さないでくださいね。例えばblogというカスタム投稿タイプなら、manage_edit-blog_columnsとなります。

以下、コード例です。

function add_blog_columns ($columns) {
   $columns['author'] = '投稿者';
   $columns['pv'] = 'pv数';
   return $columns;
 }
add_filter('manage_edit-[カスタム投稿タイプ名]_columns', 'add_blog_columns'); 

add_post_type_support

add_post_type_support関数は、initアクションフックを使って呼び出します。一つ目の引数にカスタム投稿タイプ名、二つ目に、そのカスタム投稿タイプで機能をONにしたいものを指定します。ONにできる機能の種類はこちらのページなど参照ください。

以下、コード例です。二つ目の引数をauthorにすることで、カスタム投稿タイプに投稿者を表示することを許容します。

function addAuthor() {
  add_post_type_support( '[カスタム投稿タイプ名]', 'author' );
}
add_action('init' , 'addAuthor');

manage_[カスタム投稿タイプ名]_posts_custom_column

manage_[カスタム投稿タイプ名]_posts_custom_columnのアクションフックにより、指定したカラムにデータを表示させることができます。

以下、コード例です。

投稿者はこのコードで表示されます。
PV数は、カスタムフィールドに格納されたものを引用して表示するというコードになってます。

function data_blog_column ($column_name, $post_id) {
   if ( $column_name == 'author' ) :
      $value = get_the_term_list($post_id, 'author');
      echo attribute_escape($value);
   elseif( $column_name == 'pv'):
      $stitle = get_post_meta($post_id, 'pv_count_daily', true);
      if ( isset($stitle) && $stitle ):
       echo '日:', attribute_escape($stitle);
       echo "<br>";
      else:
       echo '日:', __('None');
       echo "<br>";
      endif;
      $stitle = get_post_meta($post_id, 'pv_count_weekly', true);
      if ( isset($stitle) &amp;&amp; $stitle ):
       echo '週:', attribute_escape($stitle);
       echo "<br>";
      else:
       echo '週:', __('None');
       echo "<br>";
      endif;
      $stitle = get_post_meta($post_id, 'pv_count_all', true);
      if ( isset($stitle) &amp;&amp; $stitle ):
      echo '全:', attribute_escape($stitle);
      echo "<br>";
      else:
      echo '全:', __('None');
      echo "<br>";
      endif;
   endif;
}
add_action('manage_blog_posts_custom_column', 'data_blog_column', 10, 2);

まとめ

では、どうやってカスタムフィールドにPV数を格納しているのか、については、問い合わせをお願いします。プラグインもありますが、PV数取得はうまくやらないとデータベースをひっ迫すると思いますので、ぜひ当方オリジナルテーマ利用をご検討ください。
PV数は日、週単位で確認できると、記事を書くモチベーションに繋がると思いますので、当方が制作するサイトはすべて標準で表示するようにしています。

著者のイメージ画像

株式会社BringFlower
稲田 高洋(Takahiro Inada)

2003年から大手総合電機メーカーでUXデザインプロセスの研究、実践。UXデザイン専門家の育成プログラム開発。SEOにおいても重要なW3Cが定めるWeb標準仕様策定にウェブアクセシビリティの専門家として関わる。2010~2018年に人間中心設計専門家を保有、数年間ウェブアクセシビリティ基盤委員も務める。その後、不動産会社向けにSaaSを提供する企業の事業開発部で複数サービスを企画、ローンチ。CMSを提供し1000以上のサイトを分析。顧客サポート、サイト運営にも関わる。
2022年3月に独立後、2024年4月に株式会社BringFlowerを設立。SEOコンサルを活動の軸に据えつつ、AIライティングツールの開発と運営を自ら行う。グッドデザイン賞4件、ドイツユニバーサルデザイン賞2件、米国IDEA賞1件の受賞歴あり。