UWEB

本文まで飛ばす

WP_Queryでアーカイブページを作る

WordPress

こんにちは。やまぐち なな(@nana_winter_web)です。

WP_Queryでカテゴリーアーカイブページを作ろうと思うと、いつも全カテゴリーの記事を取得してきてしまうのでメモしておきます。

今回紹介するコードは、カテゴリーアーカイブ用ですが、必要な情報を取得して、パラメータを設定すれば他のアーカイブにも応用することができます。

コード


// アーカイブを表示しているカテゴリーのスラッグを取得
$category_slug = get_query_var('category_name');
$args = array(
'post_type' => 'post',
'category_name' => $category_slug // 取得したカテゴリーのスラッグを指定
);
$the_query = new WP_Query($args);
if ($the_query->have_posts()) :
while ($the_query->have_posts()) : $the_query->the_post();
// ループ内で出力する内容
endwhile;
endif;
wp_reset_postdata();

変数argsの中身は必要なパラメータを付け足してください。

ポイントはコードの2行目と5行目。
アーカイブを表示しているカテゴリーのスラッグを取得し、argscategory_nameに取得したスラッグを指定しています。

全カテゴリーの記事を取得してしまう原因

基本のループなら何もしなくても、そのカテゴリーの記事を取得してくれますが、WP_Queryはカテゴリーも指定しないと、その他の条件に一致する記事すべてを取得してしまうようです。

category_nameに特定のカテゴリーのスラッグを指定するわけにはいかないので、アーカイブを表示しているカテゴリーのスラッグを取得しています。

まとめ

カテゴリーは、指定しなくても自動でやってくれると思っていたのですが、そうではないようです。
同じ現象で困っている方は参考にしてみてください。

もう少し工夫すれば、カテゴリーだけでなく、日付のアーカイブなどを兼用させることもできそうです。

以上、WP_Queryを使ったカテゴリーアーカイブページの作り方でした。

記事が気に入ったら
シェアしてね

このページのトップに戻る