例で説明
固定ページに「bridal」というパーマリンクを付けた場合にカスタム投稿タイプも「bridal」で作ってしまうと競合してしまい、その結果https://~hogehoge/bridalでアクセスするとbridalのアーカイブテンプレートに飛ばされてしまい、固定ページが表示されない。
解決方法
「bridal」を固定ページで使う場合、「カスタム投稿タイプ bridal」のアーカイブページを別に指定してやると競合しない。
こちらを入れる
archiveを「bridal-list」などに書き換える
'rewrite' => array('slug' => 'bridal-list'),
'has_archive' => 'bridal-list',
こちらは通常のカスタム投稿タイプ作成
add_action('init', 'add_bridal_post_type');
function add_bridal_post_type() {
$params = array(
'labels' => array(
'name' => 'ブライダルプラン',
'singular_name' => 'ブライダルプラン',
'add_new' => '新規追加',
'add_new_item' => 'ブライダルプランを新規追加',
'edit_item' => 'ブライダルプランを編集する',
'new_item' => '新規ブライダルプラン',
'all_items' => 'ブライダルプラン一覧',
'view_item' => 'ブライダルプランを見る',
'search_items' => '検索する',
'not_found' => 'ブライダルプランが見つかりませんでした。',
'not_found_in_trash' => 'ゴミ箱内にブライダルプランが見つかりませんでした。'
),
'public' => true,
'has_archive' => true,
'supports' => array(
'title',
'editor',
'author',
'custom-fields',
'thumbnail',
),
'taxonomies' => array('bridal_category','bridal_tag')
);
register_post_type('bridal', $params);
}
こちらが対策後
add_action('init', 'add_bridal_post_type');
function add_bridal_post_type() {
$params = array(
'labels' => array(
'name' => 'ブライダルプラン',
'singular_name' => 'ブライダルプラン',
'add_new' => '新規追加',
'add_new_item' => 'ブライダルプランを新規追加',
'edit_item' => 'ブライダルプランを編集する',
'new_item' => '新規ブライダルプラン',
'all_items' => 'ブライダルプラン一覧',
'view_item' => 'ブライダルプランを見る',
'search_items' => '検索する',
'not_found' => 'ブライダルプランが見つかりませんでした。',
'not_found_in_trash' => 'ゴミ箱内にブライダルプランが見つかりませんでした。'
),
'public' => true,
'has_archive' => true,
'supports' => array(
'title',
'editor',
'author',
'custom-fields',
'thumbnail',
),
'taxonomies' => array('bridal_category','bridal_tag'),
'rewrite' => array('slug' => 'bridal-list'),
'has_archive' => 'bridal-list',
);
register_post_type('bridal', $params);
}