カスタム投稿タイプをすべて設定しました。スラッグをページ名と同じにしたいのですが、これらのCPTのすべてがその特定のページ(/ team-members)で照会されるためです。
Custom Post TypeスラッグをページのURLに設定した場合、その特定のページはページテンプレートをロードしなくなります。壊れた投稿テンプレートを読み込みます。
私のカスタム投稿タイプを書き換えます。
$rewrite = array(
'slug' => 'team-members',
'with_front' => false,
'pages' => false,
'feeds' => false,
);
これにより、 適切なURL of: http://www.example.org/team-members/bob-jones を生成できます。
今問題は私がページにアクセスしようとするときです: http://www.example.org/team-members/ 、それは正しいページテンプレートファイル(適切にはpage-team-members.php
というタイトルの)をレンダリングしません。パーマリンクの設定を保存してもうまくいきませんでした。
私のカスタム投稿タイプのURLスラッグを作成して、まったく同じものというタイトルのページに干渉しないようにするにはどうすればよいですか。
http://www.example.org/team-members/ に表示されるのは、あなたの投稿タイプの '投稿タイプアーカイブ'です。それはWordPressによって作成された投稿の自動的に生成されたリストです。投稿タイプにアーカイブを作成したくない場合は、has_archive
引数をfalseに設定することでアーカイブを無効にできます。
register_post_type( 'post_type_name', array(
'has_archive' => false,
) );
これで、競合することなく/ team-membersにページを作成できます。
この種の衝突を避ける最も簡単な方法は、URLに追加の手順を追加して、CPT投稿をページから切り離すことです。
たとえば、URLが'slug' => 'team-members',
になるように'slug' => 'team-members/member',
をhttp://www.example.org/team-members/member/bob-jones
に変更します。
確かに、それは理想的ではありません、そして、私はむしろURLがよりきれいであることを望みます、しかし時々あなたは簡単な生活のために妥協しなければなりません:-)