web-dev-qa-db-ja.com

ページの分類値を作成してwp-adminに表示する方法

WordPressバージョン4.9.4では、ページの分類法データを作成する方法を探しています。これが可能な場合は、(1)これがどのように機能するのか、(2)wp-adminの/edit.php?post_type=pageの新しい列の下にその分類値をどのようにリストするのかを理解したいと思います。

ありがとうございます。

2
klewis

これは間違いなく可能であり、そして非常に簡単です。

既存の分類法(つまりcategory)を既存の投稿タイプ(すなわちpage)に登録する場合は、 register_taxonomy_for_object_type() を使用できます。例えば。:

add_action( 'init', 'wpse_register_category_tax_for_page' );
function wpse_register_category_tax_for_page() {
    $taxonomy    = 'category';
    $object_type = 'page';

    register_taxonomy_for_object_type( $taxonomy, $object_type );
}

新しい分類法を作成し、新しい/既存の投稿タイプに関連付けることもできます。この例では、分類法classificationは既存の投稿タイプpageに関連付けられています。

add_action( 'init', 'wpse_register_custom_taxonomy', 0 );
function wpse_register_custom_taxonomy() {
    // Arguments for register_taxonomy().
    $args = [
        'public'            => true,
        'hierarchical'      => true,
        'label'             => __( 'Classification', 'textdomain' ),
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => 'classification',
        'rewrite'           => [ 'slug' => 'classification' ],
    ];

    // Array of post types to associate with this taxonomy.
    $post_types = [ 'page' ];

    register_taxonomy( 'classification', $post_types, $args );
}

ここでは、パラメータ$show_admin_columntrueに設定されていることに注意してください。これにより、分類列が/wp-admin/edit.php?post_type=page画面に追加されます。

他のプラグインがclassification分類法を登録し、$show_admin_columnパラメータをfalseに設定したとしましょう。 register_taxonomy_argsを使用して元の設定を上書きし、分類法がadmin列に表示されるようにすることができます。

add_filter( 'register_taxonomy_args', 'wpse_edit_taxonomy_args', 10, 3 );
function wpse_edit_taxonomy_args( $args, $taxonomy, $object_type ) {
    // Array of taxonomies to change arguments on.
    $taxonomies = [
        'classification',
    ];

    // Set $show_admin_column to true.
    if ( in_array( $taxonomy, $taxonomies ) ) {
        $args[ 'show_admin_column' ] = true;
    }

    return $args;
}
2
Dave Romsey