[wordpress]page-[固定ページスラグ名].phpで固定ページが表示されない


えっとね、これはwordpressサイトを作っていて俺がハマったケース何だけど、カスタム投稿タイプを固定ページに一覧で表示しよう、なんて考えてない?

んで、カスタム投稿タイプのスラグ名と同じスラグ名の固定ページを作って、そこに↓なサイトからパクってきたコード張りつけて、カスタム投稿タイプの一覧を表示しよう、なんて考えてやがるだろ?

カスタム投稿タイプの一覧ページの作成
http://www.webdesignleaves.com/wp/wordpress/965/

えっとね、まず、wordpressについて知っておかなきゃいけない知識があります。

http://[サイト名]/[固定ページスラグ名]/

と打つと、[固定ページスラグ名]という名前が付いた固定ページが表示されるよね?
これはしってるはずだ。

だからpage-[固定ページスラグ名].phpというファイルを作成しているはず。

じつは、wordpressではこのURLにはもう一つ意味があるのですよ。
それは、[固定ページスラグ名]という同名のアーカイブが有った場合そっちを優先してを呼び出しに行く、というものなの。

そこで問題があって、
wordpressではカスタム投稿タイプというのは「アーカイブ」の一種なんです。
しってた?おれはしらんかたっよ!!
つまり、

http://[サイト名]/[カスタム投稿スラグ名]/

と打つと、カスタム投稿タイプが設定されていた場合、archive-[カスタム投稿スラグ名].phpファイルが呼び出されるのです。

(なければarchive.php→index.phpの順番)

ここでもう一つ、重要なポイントが。
いま[カスタム投稿スラグ名]=[固定ページスラグ名]としてしまった場合、

http://[サイト名]/[スラグ名]/

と打った場合、wordpressはアーカーブであるarchive-[カスタム投稿スラグ名].phpファイルを読みにいってしまうのですよ。
固定ページよりもアーカイブのほうが優先順位が高いの。
つまり、いくらpage-[固定ページスラグ名].phpというファイルを用意していてもまったく読まれない。表示されない。

試しに、固定ページのスラグ名をチョコっと変えてやってみ?
ちゃんとpage-[固定ページスラグ名].phpが表示されるから。

こういうケースだと[カスタム投稿スラグ名]=[固定ページスラグ名]にしてしまいがちだから注意しないとね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です