【WordPress】カスタム投稿で管理画面一覧にカテゴリーカラムを追加する
とりあえずコード全部
// カラムを追加
function my_xxxxx_add_admin_columns( $column ) {
$column = array(
'cb' => true,
'title' => 'タイトル',
'タクソノミー名' => 'カテゴリー',
'date' => '日付',
);
return $column;
}
add_filter( 'manage_カスタム投稿タイプ名_posts_columns', 'my_xxxxx_add_admin_columns' );
// 値を表示
function my_xxxxx_manage_admin_columns( $column_name, $id ) {
if ( 'タクソノミー名' === $column_name ) {
$terms = get_the_terms( $id, 'タクソノミー名' );
$cnt = 0;
if ( null !== $terms && is_array( $terms ) ) {
foreach ( $terms as $var ) {
echo 0 !== $cnt ? ', ' : '';
echo '<a href="' . esc_url( get_admin_url() ) . 'edit.php?タクソノミー名=' . esc_html( $var->slug ) . '&post_type=カスタム投稿タイプ名">' . esc_html( $var->name ) . '</a>';
++$cnt;
}
}
}
}
add_action( 'manage_カスタム投稿タイプ名_posts_custom_column', 'my_xxxxx_manage_admin_columns', 10, 2 );
説明
【ステップ1】 一覧にカテゴリーカラムを追加する
まず、一覧にカテゴリーカラムを追加します。(※この時点ではまだ空のカラムの追加のみです。値の表示ステップ2で。)
manage_{$post_type}_posts_columns フックでカテゴリーを追加することができます。下記を functions.php に記述します。
functions.php
function my_xxxxx_add_admin_columns( $column ) {
$column = array(
'cb' => true,
'title' => 'タイトル',
'タクソノミー名' => 'カテゴリー',
'date' => '日付',
);
return $column;
}
add_filter( 'manage_カスタム投稿タイプ名_posts_columns', 'my_xxxxx_add_admin_columns' );
例えば カスタム投稿タイプ名が book、タクソノミー名が book_genre だとすると下記になります。(関数名は任意の名前でOKです)
function my_book_add_admin_columns( $column ) {
$column = array(
'cb' => true,
'title' => 'タイトル',
'book_genre' => 'カテゴリー',
'date' => '日付',
);
return $column;
}
add_filter( 'manage_book_posts_columns', 'my_book_add_admin_columns' );
【ステップ2】カラムに値を表示する
manage_{$post_type}_posts_custom_column フックで値を追加します。
functions.php
function my_xxxxx_manage_admin_columns( $column_name, $id ) {
if ( 'タクソノミー名' === $column_name ) {
$terms = get_the_terms( $id, 'タクソノミー名' );
$cnt = 0;
if ( null !== $terms && is_array( $terms ) ) {
foreach ( $terms as $var ) {
echo 0 !== $cnt ? ', ' : '';
echo '<a href="' . esc_url( get_admin_url() ) . 'edit.php?タクソノミー名=' . esc_html( $var->slug ) . '&post_type=カスタム投稿タイプ名">' . esc_html( $var->name ) . '</a>';
++$cnt;
}
}
}
}
add_action( 'manage_カスタム投稿タイプ名_posts_custom_column', 'my_xxxxx_manage_admin_columns', 10, 2 );
例えば カスタム投稿タイプ名が book、タクソノミー名が book_genre だとすると下記になります。(関数名は任意の名前でOKです)
function my_book_manage_admin_columns( $column_name, $id ) {
if ( 'book_genre' === $column_name ) {
$terms = get_the_terms( $id, 'book_genre' );
$cnt = 0;
if ( null !== $terms && is_array( $terms ) ) {
foreach ( $terms as $var ) {
echo 0 !== $cnt ? ', ' : '';
echo '<a href="' . esc_url( get_admin_url() ) . 'edit.php?book_genre=' . esc_html( $var->slug ) . '&post_type=book">' . esc_html( $var->name ) . '</a>';
++$cnt;
}
}
}
}
add_action( 'manage_book_posts_custom_column', 'my_book_manage_admin_columns', 10, 2 );