WP_Queryの使い方

WP_Queryとは

今回はWordPressのテンプレート作成のなかでも使用頻度の高いWP_Queryについて書いていきます。

まずWP_Queryについて、簡単に説明します。

通常、カテゴリーテンプレート(category.php)などの一覧ページや、記事テンプレート(single.php)において、投稿をループで表示させたいときは下記のように記述します。

<?php if(have_posts()): ?>
<?php while(have_posts()): the_post();?>
<!-- ここにループ内容 -->
<?php the_title(); ?>
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>

こうすると、カテゴリーページではカテゴリーに属する記事の一覧が、記事ページでは記事の中身が表示されます。
それぞれのテンプレートにおいてデフォルトで発行されるクエリは、WordPressのコアAPIで決められていますので、特別な指定をしなくても、そのテンプレートに適応した内容が出力されます。これをメインループといいます。

WP_Queryは、メインループではなく、独自でカスタマイズしたループを作成し出力する際に使用します。

これによって、出力順や出力件数を制御できたり、複数のポストタイプやカテゴリーに属する記事を出力できたり、メインループでは設定できない記事を取得することができます。

WP_Queryの記述方法

ここで、簡単なWP_Queryの例を見てみます。

<?php
	$args = array(
		'post_type' => array('news','event'),
'posts_per_page' => 25,
'orderby' => 'ASC'
);
?>
<?php $query = new WP_Query( $args ); ?>
<?php if($query -> have_posts()): ?>
<?php while($query -> have_posts()): $query->the_post();?>
<!-- ここにループ内容 -->
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); // クエリをリセット ?>

1〜7行目までが、出力する記事の設定(絞り込み)です。

上記の例では、

'post_type' => array('news','event'), // カスタム投稿タイプ「news」「news」の記事から
'posts_per_page' => 25, // 1ページの表示記事を25件にする
'order' => 'ASC' // 表示順序を昇順にする

という指定(絞り込み)をあらかじめしています。

あとはループ内でタイトルやコンテンツを出力します。

ここはメインループと同じですね。

パラメータ

設定できるパラメータをすべて挙げると膨大な量になってしまいますので、個人的によく使うものを下記にまとめました。

<?php
'name' => 'POST_TITLE',               // 投稿のスラッグ
'page_id' => 1, // 固定ページのID

'p' => 1, // 投稿のID
'post_parent' => 1, // 指定した親ページに含まれる
'post__in' => array(1,2,3), // 指定した投稿IDが含まれる
'post__not_in' => array(1,2,3), // 指定した投稿IDを除外する

'post_type' => array( // 投稿タイプ デフォルトの値は'post'
'post', // → 投稿
'page', // → 固定ページ
'NEWS' // → カスタム投稿タイプ (例:news)
),

'posts_per_page' => 10, // 1ページあたりに表示する投稿数。'-1'で全件表示
'paged' => get_query_var('page'), // ページ送りを有効にする

'order' => 'DESC', // 昇順・降順
'orderby' => 'rand', // 何を基準に順序を決めるか。この他 'date'(日付)、'title'(タイトル)など多数

'category_name' => 'CATEGORY_NAME', // タグのID
'cat' => 1, // タグのスラッグ

'tag' => 'TAG_NAME', // タグのスラッグ
'tag_id' => 1, // タグのID

'meta_key' => 'KEY', // カスタムフィールドのキー
'meta_value' => 'VALUE' // カスタムフィールドの値

パラメータについての日本語ドキュメントはこちらにもありますので、一度目を通してみるとおもしろいです。

さいごに

以上がWP_Queryの使い方になります。

WordPressでオリジナルのテーマ作成を行っていると、どうしても使う機会が増えてきます。

パラメータの組み合わせや、出力方法次第でいろいろなことができるのでひマスターしたいですね。

SNSシェア

WP TECH WordPress技術専門 Tips

コーポレートサイトへ

WP TECH WordPress技術専門 Tips

採用サイトへ