web-dev-qa-db-ja.com

カスタム分類メタ管理列

カスタム分類法 - shop_departmentsを追加しました。これは階層的です。それから、私はこの新しい分類法にメタフィールドを追加しました - term_meta [front_page] - これはすべてうまくいきました。

ただし、分類法の管理画面では、このメタデータの列を表示して、ユーザーがどの部署がフロントページに割り当てられているかが一目でわかるようにします。

このページに列を追加する方法がわかりません。私は何かをしたいのですが。

// Register the column
function front_page_column_register( $columns ) {
$columns['front-page'] = __( 'Front Page', 'my-plugin' );

return $columns;
}
add_filter( 'manage_edit-shopp_department_columns', 'front_page_column_register' );

分類法ページ自体ではなく、投稿やカスタム投稿タイプの編集ページに追加する方法について、私が見つけたすべての記事で説明しています。

2
Ralphonz

私はそれをうまくやった。フィルタは 'admin_init'アクションにラップされている場合にのみ機能するようです。私のテーマのfunctions.phpのカスタム分類法 'shopp_department'にカスタム分類法メタ 'front_page'の管理カラムを追加する最後のコード

// Register the column
function department_add_dynamic_hooks() {
$taxonomy = 'shopp_department';
add_filter( 'manage_' . $taxonomy . '_custom_column', 'department_taxonomy_rows',15, 3 );
add_filter( 'manage_edit-' . $taxonomy . '_columns',  'department_taxonomy_columns' );
}
add_action( 'admin_init', 'department_add_dynamic_hooks' );

function department_taxonomy_columns( $original_columns ) {
$new_columns = $original_columns;
array_splice( $new_columns, 1 );
$new_columns['frontpage'] = esc_html__( 'Front Page', 'taxonomy-images' );
return array_merge( $new_columns, $original_columns );
}

function department_taxonomy_rows( $row, $column_name, $term_id ) {
$t_id = $term_id;
$meta = get_option( "taxonomy_$t_id" );
if ( 'frontpage' === $column_name ) {
    if ($meta == true) {
        return $row . 'Yes';
    } else {
        return $row . 'No';
    }   
}

これが誰かに役立つことを願っています。

1
Ralphonz