【WordPress】管理画面の投稿一覧内にカスタムフィールドの項目を追加する例

WordPress管理画面内には「投稿」を管理できる「投稿一覧」がありますが、今回はその「投稿一覧」内のカラムを追加・削除する例となります。

投稿一覧のカラムを追加・削除する例
今回の例で追加・削除する投稿一覧のカラムは以下となります。
- カラムの最後に「項目01」を追加し、カスタムフィールドのキーsample_field01の値を表示
- 「作成者」のカラムの後に「項目02」を追加し、カスタムフィールドのキーsample_field02の値を表示
- 「日付」のカラムを削除
上記カスタマイズには、まず、フィルターフックmanage_posts_columns使用し、投稿一覧のカラムを追加・削除します。
次に、追加したカラムの内容を、アクションフックmanage_posts_custom_columnで設定します。
以下がソースコードの例となり、functions.phpに記述します。
// 投稿一覧のカラムを追加・削除するフィルターフック
function my_posts_columns( $columns ){
// カラムを追加する場合
$add_columns = array( 'item01' => '項目01');
$columns = array_merge( $columns , $add_columns);
// 順序を指定してカラムを追加する場合
$add_columns = array( 'item02' => '項目02');
$before_columns = array_slice( $columns, 0, 3 );
$after_columns = array_slice( $columns, 3 );
$columns = array_merge( $before_columns, $add_columns, $after_columns );
// カラムを削除する場合
unset( $columns['date'] );
return $columns;
}
add_filter('manage_posts_columns' , 'my_posts_columns');
// 追加したカラムの内容を設定するアクションフック
function my_posts_custom_columns( $column_name, $post_id ){
switch ( $column_name ){
// 追加したキー名item01のカラムの内容を指定
case 'item01':
echo get_post_meta( $post_id, 'sample_field01', true );
break;
// 追加したキー名item02のカラムの内容を指定
case 'item02':
echo get_post_meta( $post_id, 'sample_field02', true );
break;
}
}
add_action( 'manage_posts_custom_column' , 'my_posts_custom_columns', 10, 2 );
上記ソースコードにより、「投稿一覧」内のカラムは以下の画像のようにカスタマイズされます。

ソースコードの説明
フィルターフックmanage_posts_columns
manage_posts_columnsフックのコールバック関数では、引数に「投稿一覧のカラム」が連想配列で格納され扱うことができます。
カラムを追加する場合には、連想配列のキーに「manage_posts_custom_columnフックでカラムを扱う際に識別する名前」を指定し、値には「投稿一覧のカラムに表示する名前」を指定します。
また、デフォルで設定されている「投稿一覧のカラム」は、以下のリンク先を参考にしてみてください。
Plugin API/Filter Reference/manage posts columns « WordPress Codex
ソースコードの1行目からの箇所
例では、manage_posts_columnsフックのコールバック関数内で、array_merge、array_slice関数を使い「項目01」と「項目02」のカラムを指定した箇所に追加しています。
そして、「日付」のカラムをunsetを使用して削除しています。
array_merge、array_slice関数については、以下のリンク先を参考にしてみてください。
アクションフックmanage_posts_custom_column
manage_posts_custom_columnフックのコールバック関数では、第1引数に上記manage_posts_columnsフックで追加した配列のキーが格納され、第2引数には現在の投稿IDが格納されます。
ソースコードの20行目からの箇所
例では、manage_posts_custom_columnフックのコールバック関数内で、switch文を使用し、追加したカラム「項目01」「項目02」の内容を設定しています。
カラムの内容には、それぞれ、カスタムフィールドのキー「sample_field01」「sample_field02」の値を取得して出力しています。
また、カスタムフィールドの値を取得する関数については、以下のリンク先を参考にしてみてください。
固定ページ・カスタム投稿一覧の項目をカスタマイズする場合
上記例は投稿一覧のカスタマイズでしたが、「固定ページ一覧」「カスタム投稿一覧」も異なるフックを使用しカスタマイズ可能です。
詳しくは以下の参考サイトを確認してみてください。