LoginSignup
36

More than 5 years have passed since last update.

WordPress 管理画面の投稿一覧にカラムを追加してカスタムフィールドの値を出す

Last updated at Posted at 2017-02-08

仕様

  • 管理画面の投稿・固定ページ・カスタム投稿タイプの投稿一覧にカスタムフィールドの値を出す
  • カラムの場所も調整したい

スクリーンショット 2017-02-08 17.46.52.png

なお、カスタム分類を追加するのは register_taxonomy()show_admin_column 引数でできるのでよしなに(デフォルトでは出ないけど)
https://developer.wordpress.org/reference/functions/register_taxonomy/

カラムの追加と削除

フィルターフックで

ビルトインのカラムについては上記のリンク先参照

add_column.php
<?php
// カスタム投稿タイプ book の投稿一覧で作成者名を削除し、本の著者名を追加
function add_book_columns( $columns ) {
    // 削除(作成者名)
    unset( $columns['author'] );

    // 追加
    $new_columns = array(
        'book_author' =>  __( 'Book Author', 'my_theme' ),
    );
    $columns = array_merge( $columns, $new_columns );

    return $columns;
}
add_filter( 'manage_book_posts_columns' , 'add_book_columns' );

任意の場所に追加したいときは foreach を回そう

add_column2.php
<?php
// カスタム投稿タイプ book の投稿一覧で日付の前に、本の著者名を追加
function add_book_columns( $columns ) {
    $new_columns = array();
    foreach ( $columns as $column_name => $column_display_name ) {
        if ( $column_name == 'date' ) {
            $new_columns['book_author'] = __( 'Book Author', 'my_theme' );
        }
        $new_columns[ $column_name ] = $column_display_name;
    }   
    return $new_columns;
}
add_filter('manage_book_posts_columns' , 'add_book_columns');

カラムの中身

追加したカラムの中身に何かしら入れるためにはアクションフックで

例ではカスタムフィールドの値だが、投稿に紐付いてる情報であればアイキャッチ画像などでもOK

add_column_content.php
<?php
// カスタム投稿タイプ book の投稿一覧で 追加した著者名のカラムでその投稿のカスタムフィールド book_author_name を表示
add_action( 'manage_book_posts_custom_column' , 'custom_book_column', 10, 2 );
function custom_book_column( $column, $post_id ) {
    switch ( $column ) {
        case 'book_author' : 
            echo get_post_meta( $post_id , 'book_author_name' , true ); 
            break;

    }
}

現場からは以上です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36