投稿一覧にカスタムフィールドの値を表示させたい。
各ページのメタ情報をカスタムフィールドで管理できるようにカスタマイズした時のお話なのですが、クライアント様からメタ情報を投稿一覧に表示して確認ができるようにしたいとご希望をいただきました。
上記のような感じですね。
赤枠部分にカスタムフィールドの値が表示されています。
確かにカスタムフィールドを投稿一覧で表示できるとすごく便利です!
私も自分の運営するサイトでは以前からカスタムフィールドを投稿一覧に表示していました。
需要があるようですので、その方法を詳しく解説していきます。
投稿一覧にカスタムフィールドの値を表示させる方法
投稿一覧、固定ページ一覧、それぞれに表示する方法をご紹介します。
以下の条件でカスタムフィールドを表示させます。
表示するカスタムフィールドの名前=test
カスタムフィールドを表示する列のタイトル=てすと
個別に見ていきましょう。
投稿の投稿一覧の場合
以下のコードをfunctions.phpにコピペするだけでOKです。
function manage_posts_columns($columns) {
$columns['test'] = "てすと";
return $columns;
}
function add_column($column_name, $post_id) {
if( $column_name == 'test' ) {
$stitle = get_post_meta($post_id, 'test', true);
}
if ( isset($stitle) && $stitle ) {
echo attribute_escape($stitle);
} else {
echo __('None');
}
}
add_filter( 'manage_posts_columns', 'manage_posts_columns' );
add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );
カスタムフィールドの名前は、表示させたいカスタムフィールドの名前に差し替えで下さい。
カスタムフィールドを表示する列のタイトルも任意のものに変更してください。
固定ページの投稿一覧の場合
以下のコードをfunctions.phpにコピペしましょう。
function add_page_columns_name($columns) {
$columns['test'] = "てすと";
return $columns;
}
function add_page_column($column_name, $post_id) {
if( $column_name == 'test' ) {
$post = get_post($post_id);
$stitle = get_post_meta($post_id, 'test', true);
echo attribute_escape($stitle);
} if ( isset($stitle) && $stitle ) {
echo attribute_escape($stitle);
} else {
echo __('None');
}
}
add_filter( 'manage_pages_columns', 'add_page_columns_name');
add_action( 'manage_pages_custom_column', 'add_page_column', 10, 2);
カスタムフィールドの名前は、表示させたいカスタムフィールドの名前に差し替えで下さい。
カスタムフィールドを表示する列のタイトルも任意のものに変更してください。
複数のカスタムフィールドを表示させる方法
先ほどは1つのカスタムフィールドを表示させました。
今回は複数のカスタムフィールドを表示させて見ましょう。
以下の条件でカスタムフィールドを表示させます。
表示するカスタムフィールドの名前=test
カスタムフィールドを表示する列のタイトル=てすと
表示するカスタムフィールドの名前=test2
カスタムフィールドを表示する列のタイトル=てすと2
個別に見ていきましょう。
投稿の投稿一覧の場合
以下のコードをfunctions.phpに記述しましょう。
function manage_posts_columns($columns) {
$columns['test'] = "てすと";
$columns['test2'] = "てすと2";
return $columns;
}
function add_column($column_name, $post_id) {
if( $column_name == 'test' ) {
$stitle = get_post_meta($post_id, 'test', true);
}
if( $column_name == 'test2' ) {
$stitle = get_post_meta($post_id, 'test2', true);
}
if ( isset($stitle) && $stitle ) {
echo attribute_escape($stitle);
} else {
echo __('None');
}
}
add_filter( 'manage_posts_columns', 'manage_posts_columns' );
add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );
カスタムフィールドの名前は、表示させたいカスタムフィールドの名前に差し替えで下さい。
カスタムフィールドを表示する列のタイトルも任意のものに変更してください。
さらにカスタムフィールドを表示する場合の解説は後述します。
固定ページの投稿一覧の場合
以下のコードをfunctions.phpに記述すればOKです。
function add_page_columns_name($columns) {
$columns['test'] = "てすと";
$columns['test2'] = "てすと2";
return $columns;
}
function add_page_column($column_name, $post_id) {
if( $column_name == 'test' ) {
$stitle = get_post_meta($post_id, 'test', true);
}
if( $column_name == 'test2' ) {
$stitle = get_post_meta($post_id, 'test2', true);
}
if ( isset($stitle) && $stitle ) {
echo attribute_escape($stitle);
} else {
echo __('None');
}
}
add_filter( 'manage_pages_columns', 'add_page_columns_name');
add_action( 'manage_pages_custom_column', 'add_page_column', 10, 2);
2つ以上のカスタムフィールドを表示する場合
さらにカスタムフィールドの個数を増やす場合は、以下を参考にしてください。
$columns['test2'] = "てすと2";
上記の直下に上記の【test2】と【てすと2】の部分を任意の値に変えた1行を追加します。
今回は試しに以下の様に記述したものとします。
$columns['test3'] = "てすと3";
続いて・・・
if( $column_name == 'test2' ) {
$stitle = get_post_meta($post_id, 'test2', true);
}
上記の直下に【test2】の部分を【test3】に変更したコードを追加します。
今回の場合は・・・
if( $column_name == 'test3' ) {
$stitle = get_post_meta($post_id, 'test3', true);
}
追加した全体のコードを見ると以下の様になります。
function manage_posts_columns($columns) {
$columns['test'] = "てすと";
$columns['test2'] = "てすと2";
$columns['test3'] = "てすと3";
return $columns;
}
function add_column($column_name, $post_id) {
if( $column_name == 'test' ) {
$stitle = get_post_meta($post_id, 'test', true);
}
if( $column_name == 'test2' ) {
$stitle = get_post_meta($post_id, 'test2', true);
}
if( $column_name == 'test3' ) {
$stitle = get_post_meta($post_id, 'test3', true);
}
if ( isset($stitle) && $stitle ) {
echo attribute_escape($stitle);
} else {
echo __('None');
}
}
add_filter( 'manage_posts_columns', 'manage_posts_columns' );
add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );
投稿一覧に表示する場合のコードです。
上記の要領でお好きなカスタムフィールドを表示することができます。
掲載しすぎると一覧がゴチャゴチャするので注意が必要です。
まとめ
WordPress管理画面の投稿一覧にカスタムフィールドの値を表示させる方法でした。
このカスタマイズは以外と需要があるように感じます。
編集画面をわざわざ開かなくても一覧からカスタムフィールドの値が確認できれば便利!
カスタムフィールドを利用されている方は、このカスタマイズを是非実践してください。
今回ご紹介したコードは以下のコンテンツを参考にさせていただきました。
⇒ カスタムフィールドの値をWordPressの投稿一覧画面に表示させる方法
コメントを残す