【WordPress】管理機能の投稿一覧ページにカスタムフィールド列を追加




管理機能の投稿一覧ページにカスタムフィールドを追加して使いやすくしたいときはよくあると思います。
そんなときにカスタムフィールド列を追加する設定をまとめます。

管理機能の投稿一覧にカスタムフィールド列を追加する手順

やることは2つあり、最初に管理機能の投稿一覧ページに列を追加する設定を追加します。
その後、追加した列の各行に対象投稿毎のカスタムフィールド値の表示処理を追加することで実現できます。

前提条件

・投稿にはカスタムフィールド(ranking(ランキング))が定義されていて、ランキング列を一番右に追加することとします。

(1)列の追加設定

functions.phpに以下を追加します。

function add_posts_columns($columns) {
    // 内部的なカラム名(次の(2)で利用します) = 列のタイトル(表示する名称)
    $columns['ranking'] = 'ランキング';
    return $columns;
}
add_filter('manage_posts_columns', 'add_posts_columns');

(2)追加した列の各データ行にカスタムフィールド値の表示処理

以下もfunctions.phpに追加します。

function add_posts_column_data($column_name, $post_id) {
    if ('ranking' == $column_name) {
        echo get_post_meta($post_id, 'ranking', true);
    }
}
add_action( 'manage_posts_custom_column', 'add_posts_column_data', 10, 2 );

(3)動作確認

設定は上記で完了です。
あとは管理機能の投稿一覧ページを開き、設定されていることを確認できれば完了となります。

複数列追加したい場合

複数列追加したい場合もほとんど同じで、カラム定義箇所に複数列分定義を追加すれば実現できます。

function add_posts_columns($columns) {
    // ここに追加したい分定義を増やす
    $columns['ranking'] = 'ランキング';
    $columns['priority'] = '優先度';
    return $columns;
}
add_filter('manage_posts_columns', 'add_posts_columns');
function add_posts_column_data($column_name, $post_id) {
    // 追加した列分の分岐を追加する
    if ('ranking' == $column_name) {
        echo get_post_meta($post_id, 'ranking', true);
    } elseif ('priority' == $column_name) {
        echo get_post_meta($post_id, 'priority', true);
    }
}
add_action( 'manage_posts_custom_column', 'add_posts_column_data', 10, 2 );