WordPress管理画面の投稿一覧にカスタムカラムを追加する方法

WordPress管理画面の投稿一覧では、次の項目が列として表示されています。

  • タイトル
  • 投稿者
  • カテゴリー
  • タグ
  • コメント
  • 日付

このような列は、自身で追加することが可能です。

例えば、投稿IDを投稿一覧に表示することができます。

列の追加は、フィルターとアクションを利用して簡単に行うことができます。

この記事では、WordPress管理画面の投稿一覧にカスタムカラムを追加する方法を解説します。

WordPress管理画面の投稿一覧にカスタムカラムを追加する手順

  1. フィルターでカスタムカラムを追加
  2. アクションでカスタムカラムに表示する内容を表示

フィルターはmanage_{$post_type}_posts_columnsを、アクションはmanage_{$post->post_type}_posts_custom_columnを利用します。

WordPress管理画面の投稿一覧にカスタムカラムを追加する方法

フィルターでカスタムカラムを追加

WordPress管理画面の投稿一覧にカスタムカラムを追加するには、manage_{$post_type}_posts_columnsフィルターを利用します。

apply_filters( "manage_{$post_type}_posts_columns", string[] $post_columns )

{$post_type}は、カスタムカラムを追加したい投稿タイプのスラッグに置き換えます。つまり投稿の場合は、manage_post_posts_columnsになります。

引数の$post_columnsに一覧で表示したい項目を連想配列で指定します。

manage_{$post_type}_posts_columnsはカスタムカラムの追加だけでなく、既存カラムの変更や削除も行うことができます。

アクションでカスタムカラムに表示する内容を表示

WordPress管理画面の投稿一覧のカラムに表示する内容は、manage_{$post->post_type}_posts_custom_columnアクションを利用します。

do_action( "manage_{$post->post_type}_posts_custom_column", string $column_name, int $post_id )

{$post->post_type}は、該当する投稿タイプのスラッグを指定します。つまり投稿の場合は、manage_post_posts_custom_columnになります。

$post_idを利用して、そのカラムに表示したい内容を記述します。

WordPress管理画面の投稿一覧にカスタムカラムを追加する具体例

上記で解説したフィルターまたはアクションは、既存テーマをカスタマイズしたい場合、functions.phpに記述します。

投稿IDを表示するカスタムカラムを追加する

カスタムカラムを追加する簡単なサンプルです。投稿一覧のカラムの最後に各投稿に割り振られている投稿IDを表示します。

add_filter('manage_post_posts_columns', function($columns) {
$columns['id'] = '投稿ID'; // 必要に応じてローカライズ
  return $columns;
});
 
add_action('manage_post_posts_custom_column', function($column_name, $post_id) {
  if ($column_name == 'id') {
    echo $post_id;
  }
}, 10, 2);
WordPress Developer Resources
manage_{$post_type}_posts_columns – Hook | Developer.WordPress.org Filters the columns displayed in the Posts list table for a specific post type.
WordPress Developer Resources
manage_{$post->post_type}_posts_custom_column – Hook | Developer.WordPress.org Fires for each custom column of a specific post type in the Posts list table.
よかったらシェアしてね!
  • URLをコピーしました!