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

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 );

上記ソースコードにより、「投稿一覧」内のカラムは以下の画像のようにカスタマイズされます。

「投稿一覧」のカラムをカスタマイズした画像
上記例で「投稿一覧」のカラムをカスタマイズした状態。「日付」のカラムを削除し、「項目01」「項目02」のカラムは、モザイクとなっていますが、それぞれカスタムフィールドのキー「sample_field01」「sample_field02」の値を表示して追加しています

ソースコードの説明

フィルターフック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」の値を取得して出力しています。

また、カスタムフィールドの値を取得する関数については、以下のリンク先を参考にしてみてください。

固定ページ・カスタム投稿一覧の項目をカスタマイズする場合

上記例は投稿一覧のカスタマイズでしたが、「固定ページ一覧」「カスタム投稿一覧」も異なるフックを使用しカスタマイズ可能です。

詳しくは以下の参考サイトを確認してみてください。

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。