例として「cf_example」という名前のカスタムフィールドの値を「投稿」の一覧画面で表示したい場合は、functions.php
に下記のように記述します。
functions.php
function add_posts_columns( $columns ) {
$columns['example'] = 'サンプル';
return $columns;
}
function custom_posts_column( $column_name, $post_id ) {
if ( $column_name == 'example' ) {
$cf_example = get_post_meta( $post_id, 'cf_example', true );
echo ( $cf_example ) ? $cf_example : '-';
}
}
add_filter( 'manage_posts_columns', 'add_posts_columns' );
add_action( 'manage_posts_custom_column', 'custom_posts_column', 10, 2 );
上記を記述することで一覧ページの一番右のカラムに「サンプル」という項目が追加され、それぞれの記事で「cf_example」という名前のカスタムフィールドに値があれば内容が表示されて、値がない場合は「-」と表示されているのが確認できると思います。
カスタムフィールド値の取得にはget_post_meta()
を使用し、第2引数に任意の名前($key
)を指定してください。
また、add_filter()
とadd_action()
の一部を変更することで投稿だけでなく固定ページやカスタム投稿の一覧にも追加することができます。
上のコードでposts
となっていたのを、下記のように固定ページではpages
に、カスタム投稿の場合は${post_type}_posts
にそれぞれ変更することで追加できます。
// 固定ページ
add_filter( 'manage_pages_columns', 'add_posts_columns' );
add_action( 'manage_pages_custom_column', 'custom_posts_column', 10, 2 );
// カスタム投稿(「news」というカスタム投稿の場合)
add_filter( 'manage_news_posts_columns', 'add_posts_columns' );
add_action( 'manage_news_posts_custom_column', 'custom_posts_column', 10, 2 );