サポート » 使い方全般 » 固定ページとカスタム投稿の名称について

  • 固定ページを使用していた際に、同名のカスタム投稿名を使用した場合のご質問です。

    例えば、
    固定ページにて
    「http://◯◯◯/testpage/」という親ページを作成し、
    「http://◯◯◯/testpage/testko」という子ページを作成していたとします。

    この際、両ページとも表示されるのですが、

    『testpage』というスラッグ名のカスタム投稿を使用すると、
    親ページの方は見れますが、子ページの方は404エラーとなってしまいます。

    こちらは、表示させる方法はありますでしょうか

    理想としましては、
    「http://◯◯◯/testpage/」という親の固定ページは閲覧可能
    「http://◯◯◯/testpage/testko」という子の固定ページも閲覧可能
    「http://◯◯◯/testpage/カスタム投稿の記事名」も閲覧可能
    という形にしたいです。

    解りにくい書き方になってしまい、恐縮なのですが、
    どなたかご教授頂けますと幸いです

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • なぜそのような仕様なのか、、、というのは別として。

    『testpage』というスラッグ名のカスタム投稿を使用すると、
    親ページの方は見れますが、子ページの方は404エラーとなってしまいます。

    slugが衝突してしまいますから、これが正しい挙動なのかと思います。
    逆にできるのであれば知りたいです。

    トピック投稿者 totoru

    (@totoru)

    早速の解答をありがとうございます。

    >slugが衝突してしまいますから、これが正しい挙動なのかと思います。
    そうなのですね、ありがとうございます。
    疑問点が無くなりました。

    >なぜそのような仕様なのか、、、というのは別として。
    我流で作ってしまっていたので、変な作り方になっているのかもしれません。。
    質問を重ねてしまって恐縮なのですが、
    「http://◯◯◯/testpage/」というカスタム投稿を使用する場合は、
    同じURLで固定ページを出すということ仕様の時点でけっこう本来の使い方から外れてしまっているという感じでしょうか
    (説明が難しいのですが、カスタム投稿で通常記事、固定ページは特別記事みたいな位置づけで考えておりました)

    本来の使い方から外れてしまっているという感じでしょうか

    register_post_type()を使ってカスタム投稿タイプを登録する際に、has_archiveをfalseにするとarchive.phpなどを使って表示される投稿アーカイブが機能しなくなりますので、この場合は固定ページを使ってアーカイブページを作成することになるのと思います(デフォルトの投稿はこの方法でアーカイブページを作成します)。

    そして、固定ページの子ページのスラッグとカスタム投稿タイプのスラッグが衝突している場合ですが、その場合は通常、カスタム投稿タイプのリライトルールが適用されますので、ご質問の状況だと固定ページで設定した子投稿が存在しているものの、カスタム投稿タイプ内でページの存在の可否が判定されるのでエラーになるのだと思います。

    add_rewrite_rule( 'testpage/testko/?$', 'index.php?pagename=testpage/testko', 'top' );

    正しい方法なのかはわかりませんが、独自のリライトルールを設定してあげることで、特定の固定ページを表示させることは可能です。

    特別記事というものが更新・新しく追加される頻度の高いものであるとすると、上記はあまり現実的な方法ではないので(固定ページのカスタムフィールドから自動でルールを作成するとか?)、カスタム投稿から特別記事を作成し、分類する必要があればカスタムタクソノミーで区別するのがいいと思います。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「固定ページとカスタム投稿の名称について」には新たに返信することはできません。