なかちょんブログ

プログラミングとマイクラ好きな子育てパパのブログ

WordPressで固定ページにパラメータをつけて_GETさせたら404エラーが出たけど解決した件

   

WordPressで、サイドバーにサブナビをつくって、年度ごとの投稿の一覧を表示させるようにしたいと思っていました。

↓ こんな感じ。

■サイドバー
サブナビ
・2013
・2012
・2011

■メイン
サブナビでクリックされた年度の記事一覧を表示

これ、年度ごとに固定ページつくってそれぞれにリンクを貼ってしまえば簡単なんだけど、できれば、新しい年度になって投稿が増えたら自動的に年度がサブナビにも増えてほしい。

で、考えた方法は、サブナビのリンクに年度のパラメータをつけてこんな風にすること。

<a href="<?php bloginfo('url'); ?>/news?year=2013">2013</a>
<a href="<?php bloginfo('url'); ?>/news?year=2012">2012</a>
<a href="<?php bloginfo('url'); ?>/news?year=2011">2011</a>

つまり、メインページで記事一覧を取得する前に、いったん_GETでyearのパラメータを受け取り、WP_Queryを使えばいいと思いやってみた。
(ちなみに、このWP_Queryの方法は、大宮コワーキングスペース7Fのオーナーで星野の中の星野とよばれるコミュニティコムの星野さんに教えてもらいました。)


$year = htmlspecialchars($_GET['year']);
$my_query = new WP_Query(array(
'year' => $year,
'posts_per_page' => 10,
'post_type' => 'post',
'orderby' => 'date',
'order' => 'DESC'
));

でもこれ、2013年だとうまくいくんだけど、yearを2012とか2011にするとなぜか404エラーが発生してしまう。

途中までうまくいくのになんでだろう?と理由がわからず、かなりはまっていたんだけど、もしかしたら’year’がいけないのかとおもい’newsyear’にしたところ解決しました。

つまり、yearはWordPressの中でもパラメータで既につかっているものなので、どっか干渉してだめだったらしい。おそらく、dateとかmonthとかも同じような理由でできない可能性が大。

ということで、同じようにWordPressでパラメーターを_GETで渡したら、うまくいく時と404エラーになる時がある人は、パラメーターを変えて試して見ることをおすすめします。

↓ 星野さんをはじめ後藤さんやITかあさんも著者として参加されている最近発売された本

 - WordPress