解 説
wordPressでは、カスタム投稿という個別の投稿タイプを作成することができます。カスタム投稿に記事を投稿すると、ダッシュボードの一覧画面には通常、記事の「タイトル」と「日付」しか表示がされません。今回はこの一覧画面に記事の属性(カスタムタクソノミーやカスタムフィールドなど )をカラムで追加表示させる方法についてご紹介します。
1カスタム投稿タイプのデフォルトの管理画面(一覧)を確認
2functions.phpに設定の追記を行います。まずは呼び出したいタクソノミー やフィールドをセットします。
/*============================================ *管理画面のカスタム投稿一覧に表示させたいカラムを追加 ============================================*/ /*カラム(カスタムフィールド値「industry:業種」)をセット*/ function manage_posts_columns($columns) { $columns['industry'] = "業種"; return $columns; } function add_column($column_name, $post_id) { if( $column_name == 'industry' ) { $stitle = get_post_meta($post_id, 'industry', true); } if ( isset($stitle) && $stitle ) { echo esc_attr($stitle); } else { echo __(''); } } add_filter( 'manage_posts_columns', 'manage_posts_columns' ); add_action( 'manage_posts_custom_column', 'add_column', 10, 2 ); /*カラム(カスタムタクソノミー値「gallery_category:制作カテゴリー」)をセット*/ function add_custom_column( $defaults ) { $defaults['gallery_category'] = '制作実績カテゴリー'; return $defaults; } add_filter('manage_cpt_posts_columns', 'add_custom_column'); function add_custom_column_id($column_name, $id) { if( $column_name == 'gallery_category' ) { echo get_the_term_list($id, 'gallery_category', '', ', '); } } add_action('manage_posts_custom_column', 'add_custom_column_id', 10, 2);
上記では、カスタム投稿のタクソノミー (カテゴリー )である「industry」とフィールド値である「gallery_category」をセットしました。
3セットしたカラムを呼び出すコードを追記します。
/*============================================ *管理画面のカスタム投稿一覧に表示させたいカラムを追加 ============================================*/ /*カラム(カスタムフィールド値「industry:業種」)をセット*/ function manage_posts_columns($columns) { $columns['industry'] = "業種"; return $columns; } function add_column($column_name, $post_id) { if( $column_name == 'industry' ) { $stitle = get_post_meta($post_id, 'industry', true); } if ( isset($stitle) && $stitle ) { echo esc_attr($stitle); } else { echo __(''); } } add_filter( 'manage_posts_columns', 'manage_posts_columns' ); add_action( 'manage_posts_custom_column', 'add_column', 10, 2 ); /*カラム(カスタムタクソノミー値「gallery_category:制作カテゴリー」)をセット*/ function add_custom_column( $defaults ) { $defaults['gallery_category'] = '制作実績カテゴリー'; return $defaults; } add_filter('manage_cpt_posts_columns', 'add_custom_column'); function add_custom_column_id($column_name, $id) { if( $column_name == 'gallery_category' ) { echo get_the_term_list($id, 'gallery_category', '', ', '); } } add_action('manage_posts_custom_column', 'add_custom_column_id', 10, 2); /*============================================ *ここからコード追記、 カラムを追加したい投稿タイプ名と、カラム名を指定します。 ============================================*/ // カスタム投稿タイプ名「gallery」の場合 function sort_column($columns){ $columns = array( 'title' => 'タイトル', 'gallery_category' => '制作実績カテゴリー', 'industry' => '業種', 'date' => '日時' ); return $columns; } add_filter( 'manage_edit-gallery_columns', 'sort_column'); /* ↑ 'manage_edit-○○○投稿タイプ名○○○_columns', 'sort_column' */
<コード追記以下の解説>
セットしたカラムを、どの投稿タイプで表示させるのかを指定し、表示させるカラムの選択を行っています。
カラムの順番もコード記述通りに表示されます。これで設定は完了です。
ダッシュボードを確認してみましょう。
「制作実績カテゴリー(タクソノミー)」と「業種(フィールド)」のカラムが記述順の通り、表示されていればOKです。
4複数のカラムをセットして、投稿タイプ別に出し分ける事も可能です。
/*============================================= *管理画面のカスタム投稿一覧に表示させたいカラムを追加 =============================================*/ /*各カスタム投稿タイプのフィールド属性をカラムに一度にセットします*/ function manage_posts_columns($columns) { $columns['type'] = "種別"; $columns['number'] = "登録番号"; $columns['document_type'] = "種別"; $columns['download'] = "ダウンロードファイル"; $columns['staff_name'] = "名前"; $columns['career_name'] = "名前"; return $columns; } function add_column($column_name, $post_id) { if( $column_name == 'type' ) { $stitle = get_post_meta($post_id, 'type', true); } if( $column_name == 'number' ) { $stitle = get_post_meta($post_id, 'number', true); } if( $column_name == 'document_type' ) { $stitle = get_post_meta($post_id, 'document_type', true); } if( $column_name == 'download' ) { $stitle = get_post_meta($post_id, 'download', true); } if( $column_name == 'staff_name' ) { $stitle = get_post_meta($post_id, 'staff_name', true); } if( $column_name == 'career_name' ) { $stitle = get_post_meta($post_id, 'career_name', true); } if ( isset($stitle) && $stitle ) { echo esc_attr($stitle); } else { echo __(''); } } add_filter( 'manage_posts_columns', 'manage_posts_columns' ); add_action( 'manage_posts_custom_column', 'add_column', 10, 2 ); /*各カスタム投稿タイプのタクソノミーをカラムに一度にセットします*/ function add_custom_column( $defaults ) { $defaults['product_category'] = '製品カテゴリー'; $defaults['product_purpose'] = '用途試験'; $defaults['news_category'] = '新着情報カテゴリー'; return $defaults; } add_filter('manage_cpt_posts_columns', 'add_custom_column'); function add_custom_column_id($column_name, $id) { if( $column_name == 'product_category' ) { echo get_the_term_list($id, 'product_category', '', ', '); } if( $column_name == 'product_purpose' ) { echo get_the_term_list($id, 'product_purpose', '', ', '); } if( $column_name == 'news_category' ) { echo get_the_term_list($id, 'news_category', '', ', '); } } add_action('manage_posts_custom_column', 'add_custom_column_id', 10, 2); /*================================================================== //投稿タイプ別にカラム「カスタムフォールド、カスタムタクソノミー」の呼び出しを設定 ==================================================================*/ // 新着情報「dtec_news」の場合 function sort_column($columns){ $columns = array( 'title' => 'タイトル', 'news_category' => '新着情報カテゴリー', 'date' => '日時' ); return $columns; } add_filter( 'manage_edit-dtec_news_columns', 'sort_column'); // 01 知的所有権「property」の場合 function sort_column_01($columns){ $columns = array( 'title' => '名称', 'type' => '種別', 'number' => '登録番号', 'date' => '日時' ); return $columns; } add_filter( 'manage_edit-property_columns', 'sort_column_01'); // 02 リリース報告書「report」の場合 function sort_column_02($columns){ $columns = array( 'title' => 'タイトル', 'document_type' => '種別', 'date' => '日時' ); return $columns; } add_filter( 'manage_edit-report_columns', 'sort_column_02'); // 03 製品情報「product_info」の場合 function sort_column_03($columns){ $columns = array( 'title' => '型式', 'product_category' =>'製品カテゴリー', 'product_purpose' =>'用途試験', 'download' => 'ダウンロード', 'date' => '日時' ); return $columns; } add_filter( 'manage_edit-product_info_columns', 'sort_column_03'); // 04 事例紹介「case」の場合 function sort_column_04($columns){ $columns = array( 'title' => 'タイトル', 'date' => '日時' ); return $columns; } add_filter( 'manage_edit-case_columns', 'sort_column_04'); // 05 新卒採用「newemployee」の場合 function sort_column_05($columns){ $columns = array( 'title' => 'タイトル', 'staff_name' => '名前', 'date' => '日時' ); return $columns; } add_filter( 'manage_edit-newemployee_columns', 'sort_column_05'); // 06 キャリア採用「career」の場合 function sort_column_06($columns){ $columns = array( 'title' => 'タイトル', 'career_name' => '名前', 'date' => '日時' ); return $columns; } add_filter( 'manage_edit-career_columns', 'sort_column_06');
このように投稿タイプ別にカラムと順番を変えながら、複数の投稿タイプへのカラム追加を一度に設定することもできます。
このようにカスタム投稿タイプのデフォルト設定では、「タイトル」と「日付」しかカラム表示がされません。
それ以外の記事の属性をカラム追加する方法について以下、ご紹介します。