仕様
- 管理画面の投稿・固定ページ・カスタム投稿タイプの投稿一覧にカスタムフィールドの値を出す
- カラムの場所も調整したい
なお、カスタム分類を追加するのは register_taxonomy()
の show_admin_column
引数でできるのでよしなに(デフォルトでは出ないけど)
https://developer.wordpress.org/reference/functions/register_taxonomy/
カラムの追加と削除
フィルターフックで
-
manage_posts_columns
: 投稿一覧
https://codex.wordpress.org/Plugin_API/Filter_Reference/manage_posts_columns -
manage_pages_columns
: 固定ページ一覧
https://codex.wordpress.org/Plugin_API/Filter_Reference/manage_pages_columns -
manage_{$post_type}_posts_columns
: カスタム投稿タイプ{$post_type}
(=スラッグ)一覧
https://codex.wordpress.org/Plugin_API/Filter_Reference/manage_$post_type_posts_columns
ビルトインのカラムについては上記のリンク先参照
add_column.php
<?php
// カスタム投稿タイプ book の投稿一覧で作成者名を削除し、本の著者名を追加
function add_book_columns( $columns ) {
// 削除(作成者名)
unset( $columns['author'] );
// 追加
$new_columns = array(
'book_author' => __( 'Book Author', 'my_theme' ),
);
$columns = array_merge( $columns, $new_columns );
return $columns;
}
add_filter( 'manage_book_posts_columns' , 'add_book_columns' );
任意の場所に追加したいときは foreach を回そう
add_column2.php
<?php
// カスタム投稿タイプ book の投稿一覧で日付の前に、本の著者名を追加
function add_book_columns( $columns ) {
$new_columns = array();
foreach ( $columns as $column_name => $column_display_name ) {
if ( $column_name == 'date' ) {
$new_columns['book_author'] = __( 'Book Author', 'my_theme' );
}
$new_columns[ $column_name ] = $column_display_name;
}
return $new_columns;
}
add_filter('manage_book_posts_columns' , 'add_book_columns');
カラムの中身
追加したカラムの中身に何かしら入れるためにはアクションフックで
-
manage_posts_custom_column
: 投稿一覧
https://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column -
manage_pages_custom_column
: 固定ページ一覧
https://codex.wordpress.org/Plugin_API/Action_Reference/manage_pages_custom_column -
manage_{$post_type}_posts_custom_column
: カスタム投稿タイプ{$post_type}
(=スラッグ)一覧
https://codex.wordpress.org/Plugin_API/Action_Reference/manage_$post_type_posts_custom_column
例ではカスタムフィールドの値だが、投稿に紐付いてる情報であればアイキャッチ画像などでもOK
add_column_content.php
<?php
// カスタム投稿タイプ book の投稿一覧で 追加した著者名のカラムでその投稿のカスタムフィールド book_author_name を表示
add_action( 'manage_book_posts_custom_column' , 'custom_book_column', 10, 2 );
function custom_book_column( $column, $post_id ) {
switch ( $column ) {
case 'book_author' :
echo get_post_meta( $post_id , 'book_author_name' , true );
break;
}
}
現場からは以上です。