WordPress

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

最終更新日:

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

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

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

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

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

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

以下、コード例です。

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

add_post_type_support

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

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

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

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

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

以下、コード例です。

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

  1. function data_blog_column ($column_name, $post_id) {
  2. if ( $column_name == 'author' ) :
  3. $value = get_the_term_list($post_id, 'author');
  4. echo attribute_escape($value);
  5. elseif( $column_name == 'pv'):
  6. $stitle = get_post_meta($post_id, 'pv_count_daily', true);
  7. if ( isset($stitle) && $stitle ):
  8. echo '日:', attribute_escape($stitle);
  9. echo "<br>";
  10. else:
  11. echo '日:', __('None');
  12. echo "<br>";
  13. endif;
  14. $stitle = get_post_meta($post_id, 'pv_count_weekly', true);
  15. if ( isset($stitle) &amp;&amp; $stitle ):
  16. echo '週:', attribute_escape($stitle);
  17. echo "<br>";
  18. else:
  19. echo '週:', __('None');
  20. echo "<br>";
  21. endif;
  22. $stitle = get_post_meta($post_id, 'pv_count_all', true);
  23. if ( isset($stitle) &amp;&amp; $stitle ):
  24. echo '全:', attribute_escape($stitle);
  25. echo "<br>";
  26. else:
  27. echo '全:', __('None');
  28. echo "<br>";
  29. endif;
  30. endif;
  31. }
  32. add_action('manage_blog_posts_custom_column', 'data_blog_column', 10, 2);

まとめ

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