投稿者を加える

Web

カスタム投稿タイプの管理画面一覧に投稿者を加えたい

WordPress案件を構築している中で発見があったので、メモ。カスタム投稿タイプでタグとカテゴリーを用意したい投稿があったので、導入しました。すると、記事一覧には投稿日時しか表示されていません。クライアントが普通の投稿一覧画面と見比べて、わかりにくく感じる可能性があったので、必要な要素を表示する方法を探すことに。すると、すぐに見つかり、参考にしたのがこちらのサイトです。

【WordPress】管理画面で、タクソノミーやカスタムフィールドの列を追加する(ソート機能付き) | 東京のホームページ制作 / WEB制作会社 BRISK
WordPressのカスタマイズをしていて、管理画面の投稿一覧の使い勝手も向上させたい!と思う時ってありますよ

カスタム投稿タイプの設定と同様、function.phpでコントロールするようです。ソートもついて、いい感じですね。私が表示させたかったのは、id・タグ・カテゴリー・投稿者で、まずはidのみで試すことに。解説をじっくり読まなかったため、うまく表示されませんでしたが、試行錯誤するとなんとか表示されました。続いて、カテゴリーとタグも加えます。これらもidと同様に加えてあげると、苦労することなく表示されました。

本当は投稿者も同じ手順を踏んでやる予定でしたが、手順を間違えて、function my_add_columns_contentに追加することなくブラウザで確認してしまいます。すると、一覧に表示されているではありませんか。試しに、タグとカテゴリーもfunction my_add_columns_contentからコメントアウトすると表示されません。ちなみに、$columns[‘categories’]とやると罫線が表示されるので、普通の投稿で使われているものはfunction my_add_columns_contentに記載しなくても良いのかもしれませんね。

<?php

function my_manage_posts_columns_category_many($columns) {
  $columns['term_id'] = 'JOB ID';
  $columns['author'] = "投稿者";
  $columns['job-cat'] = "カテゴリー";
  $columns['job-tag'] = "タグ";
  return $columns;
}

function my_add_columns_content($column_name, $post_id) {
  if( $column_name == 'term_id' ) {
    $stitle = $post_id;
  }
  if( $column_name == 'job-cat' ) {
    $tax = wp_get_object_terms($post_id, 'job-cat');
    $sstitle = $tax[0]->name;
  }
  if( $column_name == 'job-tag' ) {
    $tax = wp_get_object_terms($post_id, 'job-tag');
    $ssstitle = $tax[0]->name;
  }
  if ( isset($stitle) && $stitle ) {
    echo esc_attr($stitle);
  }
  if ( isset($sstitle) && $sstitle ) {
    echo esc_attr($sstitle);
  }
  if ( isset($ssstitle) && $ssstitle ) {
    echo esc_attr($ssstitle);
  }
}

function my_manage_edit_category_many_sortable_columns($columns){
    $columns['term_id'] = 'JOB ID';
    $columns['author'] = "投稿者";
    $columns['job-cat'] = "カテゴリー";
    $columns['job-tag'] = "タグ";
    return $columns;
}
add_filter( 'manage_edit-job_columns', 'my_manage_posts_columns_category_many' );
add_action( 'manage_job_posts_custom_column', 'my_add_columns_content', 10, 2 );
add_filter( 'manage_edit-job_sortable_columns', 'my_manage_edit_category_many_sortable_columns');
?>

コメント