web-dev-qa-db-ja.com

カスタム分類URLが同じ名前のページにリダイレクトされています

私はこのようなcptを作成しました:

 register_post_type( 'mission', array(
    'labels'              => array( ... ),
    'supports'            => array( 'title', 'editor', 'comments', 'revisions', 'trackbacks', 'author', 'post-formats' ),
    'taxonomies'          => array( 'mission_category', 'mission_client', 'mission_location', 'mission_status'), 
    'hierarchical'        => false,
    'public'              => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_nav_menus'   => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 5,
    'menu_icon'           => 'dashicons-star-filled',
    'can_export'          => true,
    'has_archive'         => true,
    'exclude_from_search' => false,
    'publicly_queryable'  => true,
    'capability_type'     => 'post', 
    ) 
);

上記のcptのカスタム分類法

 register_taxonomy( 'mission_category', array( 'mission' ), array(
    'public'            => true,
    'show_ui'           => true,
    'show_in_menu'      => true,
    'show_in_nav_menus' => true,
    'show_tagcloud'     => true,
    'show_admin_column' => true,
    'hierarchical'      => true,
    'capabilities' => array(
        'manage_terms' => 'manage_categories',
        'edit_terms'   => 'manage_categories',
        'delete_terms' => 'manage_categories',
        'assign_terms' => 'edit_posts',
        ),
    'rewrite' => array(
        'slug'         => 'mission/category',
        'with_front'   => false,
        'hierarchical' => true,
        'ep_mask'      => EP_NONE
        ),
    )
);

"Engineering"と "Economy"という2つのmission_categoriesを作成しました。私はこれらのエンドポイントでアーカイブページを見つけることを期待しています:/mission/category/engineering/mission/category/economy

上記のカテゴリと同じ名前で2つのページも作成しました。これらのページは/engineering/economyにあります。

奇妙なことに、自分のmission_categoriesと同じ名前のページを作成した場合、アーカイブを表示しようとするとそのページにリダイレクトされます。つまり、このエンドポイント/mission/category/economyを手動で入力すると、/economyになります。言及する価値があるのは、管理者のmission_categoryページからの「view-link」が正しいということですが、それをクリックすると、まだそのページにリダイレクトされます。

これは、カテゴリと同じ名前のページがある場合にのみ発生します。たとえば、エコノミーページを削除した場合、/mission/category/economyは正しいURLになります。

1
Anders Östman

私はこれを解決する方法をいくつかの大規模なグーグルで見つけました。重要なのは、分類法{before ctpを宣言することです。理由はわかりませんが、動作します=)

ソース: https://cnpagency.com/blog/the-right-way-to-do-wordpress-custom-taxonomy-rewrites/

1
Anders Östman