複数のカテゴリーの最新記事のみを表示する方法
最新の記事一覧を表示したいのだけど、特定のカテゴリーは省いて表示したい、という場面での一つの解決法です。
この方法なら自由度が高いよ、ということでメモです。
WP_Query関数の利用
まずは適当な変数(ここでは$archive_query)に必要なデータを放り込みます。
$archive_query = new WP_Query(抜き出すデータの条件);
抜き出すデータの条件の指定方法などは、関数リファレンス/WP Query - WordPress Codex 日本語版に詳しく書かれています。
カテゴリのスラッグを使って抽出する場合は次のような感じになります。
$archive_query = new WP_Query('category_name=category1,category2,category3');
これで、スラッグがcategory1,category2,category3のカテゴリを読み込みます。
$archive_query = new WP_Query( 'cat=-2,-6,-17,-38' );
というようにidを使うと、特定のidのカテゴリを除外することができたりします。
あとはループを作って必要な処理を行います。
<?php if($archive_query->have_posts()) : while($archive_query->have_posts()) : $archive_query -> the_post(); ?> 一覧をどうやって表示するかを記述 <?php endwhile ; wp_reset_postdata(); else : ?> 記事が無いときの記述 <?php endif; ?>
以上。
WP_Query関数はかなり使い勝手がいい。
ここでは特定のカテゴリのみを抽出する方法を示しましたが、リファレンスをみればわかるように記事のIDやページなど、データを取り出す条件が多彩で、しかもWP_Queryのデータを使うループ内では、通常のループの記述と同じ記述で処理できるのでかなり使いやすいです。
トップページで、最新の記事のほかにお知らせカテゴリの記事一覧を表示するとか、カテゴリ別の最新記事を並べたりとかいうのにも使えます。
ただ、データをごっそりと引っ張り出して使うので、サーバの負荷が増えないか心配ではあります。
リファレンスのほうには「他にもちょうどいい関数があるからそっちも使いなよ」とあるので、細かい処理を必要としないのであれば専用の関数を使ったほうが良いと思います。