管理機能の投稿一覧ページにカスタムフィールドを追加して使いやすくしたいときはよくあると思います。
そんなときにカスタムフィールド列を追加する設定をまとめます。
管理機能の投稿一覧にカスタムフィールド列を追加する手順
やることは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 );