【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で返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。Twitterで返信する場合はコチラから。