私はこのような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になります。
私はこれを解決する方法をいくつかの大規模なグーグルで見つけました。重要なのは、分類法{before ctpを宣言することです。理由はわかりませんが、動作します=)
ソース: https://cnpagency.com/blog/the-right-way-to-do-wordpress-custom-taxonomy-rewrites/