知ってる方は知っているかもしれない・・・
でも私は知らなかったし、これからそれでつまづくことがあるかもしれないので記録しておきたい。

ポストタイプの名前にした文字列をリクエストクエリに使うと 404になる(または偶然にページが表示される・・・かもしれない)

なにそれ?って感じなので具体例を。

たとえば商品一覧作りたいので商品用の投稿タイプを「 item 」という名前で作りました。

で、それとは別にサイドバーに商品検索的に下記のようなフォームを作りました。

<form action="/item_list/" method="post">
アイテム検索:
<input type="text" name="item" value=""><br />
<input type="submit" value="検索" />
</form>

※上記はサンプルです。かなり味気のないサイトのようですw

このフォームは商品一覧ページで商品名のキーワードをリクエストを受け取って検索し
結果を表示したい・・・という感じです。

でも、結果は Not Found ・・・

もちろん上記の場合で言うと「 item_list 」っていうページは作ってある状態です。

他のパラメータだけならもちろん大丈夫。

http://example.com/item_list/
だとすると
http://example.com/item_list/?item=apple
だと 404エラー
でも
http://example.com/item_list/?a=1
だと普通に item_list が表示されました。

※URLすべてサンプルです。

まぁ、一応結論・・・

カスタム投稿タイプ名をパラメータにすると404エラーが起こるよ!

ちなみに元々ある投稿タイプだとどうなるんだろうと思いました。
以下やってみた結果・・・

  • /?post=ggg → そのまま表示される
  • /?page=2 → /2/ になって2ページ目表示しようとする(一覧ページだからかな)
  • /?page=ggg → そのまま表示される
  • /?attachment=2 → 404エラー
  • /?revision=5 → そのまま表示される
  • /?nav_menu_item=5 → そのまま表示される

attachment 以外はそのまま表示されました。
そのまま っていうのは http://example.com/item_list?post=ggg みたいな感じでURLがそのまま表示はそのページだった感じです。

ま、そういうことなんだな・・・ということで覚えておこう。

この記事が気に入ったら
いいね ! しよう

Twitter で