WordPressで任意の条件に当てはまる記事を一覧表示する方法「WP_Query」
Table of Contents
こんな方におすすめ
・WordPressでタグやタクソノミー等の比較的マイナーな条件での記事一覧表示を実装したい
・1ページに表示される記事件数を変えたい
・絞り込み検索を実装したい
$argsに条件を格納
WordPressでは、カテゴリーや月別アーカイブを使うことで、特定のカテゴリーやある月の記事一覧を簡単に取得できますが、タクソノミーごと等の複雑な条件での一覧表示(絞り込み)を実装しようとすると案外難しいです。そこで、それを実装する方法を見つけましたので、皆さんにも共有したいと思います。
結論から先に述べますと、WP_Queryを使えば実装できます。はじめに、コードを示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php //$argsに検索条件を配列で格納 $args = array( 'meta_value' => 'value',//カスタムフィールドの値が「value」のものを取得 'posts_per_page' => 5, //1ページに投稿する件数 ); $the_query = new WP_Query($args); if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); /* ループ内の記述 */ endwhile; endif; wp_reset_postdata(); ?> |
まず、3~6行目の部分で取得する記事の条件を配列に格納します。
上のコードでは、「カスタムフィールドの値」がvalueの投稿を取得しています。コードから分かるように、カスタムフィールドの値を指定するときは「’meta_value’ => ‘○○’」と表すのですね。他にも例えば、「’category_name’ => ‘○○’」とすれば、カテゴリーで絞り込めますし、「’taxonomy’=> ‘○○’」とすれば、タクソノミーで絞り込めます。他にも、ここには書き切れないほどたくさんあります。また、上のコードに「’post_per_page’ => 5」という記述がありますが、このように取得(表示)のしかたなども指定できますので、併せて知っておくと便利かと思います。
条件$argsをWP_Query()の引数にセット
さて、条件を指定したら8行目にある通り、「WP_Query($args)」と指定した条件の配列$argsをWP_Query()の引数にセットします。9行目以降で、指定した条件に合った投稿について、ページに表示するコードを書けば、ほぼ完成です。最後に16行目の「wp_reset_postdata();」を忘れないで記述してください。
冒頭にも記載しましたが、これを応用することで絞り込み検索も実装できます!この方法については、また後ほど別の記事でご紹介したいと思います。
追記
WordPressで絞り込み検索を実装する方法絞り込み検索