manage_posts_columns管理画面にデータを表示する列を追加するフックです。
manage_posts_columnsに関する詳しい情報についてはこちら、または公式ページを参照ください。
本ページの内容は、あくまでもサイト管理者である私の所見と実際に使用した経験などに基づくものであり、解釈が間違っていたり、誤りがあることがありますので、正確な情報は上記の公式ページ等を参照ください
コード例
以下は管理画面の一覧に「抜粋」に入力がある場合のみ、その内容を表示させるコードの一例です。
基本的には「manage_posts_columns」で追加した列に「manage_posts_custom_column」の情報を表示させるという流れで列とデータを表示させます。
// 投稿一覧に「抜粋」の列を追加
function add_excerpt_column($columns) {
$new_columns = array();
foreach ($columns as $key => $value) {
$new_columns[$key] = $value;
if ($key === 'title') {
$new_columns['excerpt_column'] = '抜粋';
}
}
return $new_columns;
}
add_filter('manage_posts_columns', 'add_excerpt_column');
// 追加した「抜粋」列に値を表示(抜粋が入力されている場合のみ)
function display_excerpt_column_content($column_name, $post_id) {
if ($column_name === 'excerpt_column') {
// 抜粋が入力されているかチェック
if (has_excerpt($post_id)) {
$excerpt = get_the_excerpt($post_id);
echo esc_html($excerpt);
} else {
// 抜粋が入力されていない場合は何も表示しない(または'-'などを表示)
echo '-';
}
}
}
add_action('manage_posts_custom_column', 'display_excerpt_column_content', 10, 2);
manage_posts_columns使用時の注意点
固定ページは「manage_pages_columns」を使う
これはWordPressコアの仕様で、「manage_posts_columns」では、固定ページと添付ファイル(メディア:attachment)を除外するようになっています。
「投稿」や特定のカスタム投稿タイプのみを指定する場合は
「manage_posts_columns」は定義として固定ページと添付ファイルを除くというのが条件になっていて、「manage_posts_columns」で追加した列は、それらとは異なる投稿タイプ(カスタム投稿タイプ)の管理画面の列にも表示されるようになっています。
公式の「manage_posts_columns」ではカスタム投稿タイプを指定するフィルターが用意されていて、フックを「manage_{$post_type}_posts_columns」($post_typeは投稿タイプ名)にすることで特定のカスタム投稿タイプのみに列を追加することができるようになっていると書かれており、その通りに動作します。
これで自身で追加した投稿タイプのみに列を表示させることができるようになるのですが、標準の投稿タイプである「投稿」だけに限定する場合はどのようにしたらいいのかという疑問が残ります。
そのような場合には「投稿」もpostという投稿タイプの1つなので、「manage_post_posts_columns」と明示することで投稿のみに限定することができます。
この情報については公式の「manage_{$post_type}_posts_columns」フィルターのページにちらっと書かれているだけで見落としがちなので注意しましょう。