【WordPress】WP_Queryの使用方法とよく使うパラメータまとめ
WordPressのサブループで使うWP_Query
。WP_Query
で使うパラメータはたくさんあって覚えきれないので、自分のメモ用としてまとめてみました。
頑張って少しずつ増やしていきたいと思います。
この記事の目次を表示
WP_Queryの基本
まずはWP_Query
とは何か簡単にご紹介します。
WP_Queryとは
WP_Query
は、WordPressでパラメータを指定してコンテンツを取得するためのクラスです。
これは主にサブループ内で使用され、指定された条件に一致する投稿やページを取得します。
これにより、サイトのコンテンツを動的にフィルタリングして表示することが可能になります。
WP_Queryの基本的な使い方
WP_Query
を使ったサブループの基本的なコードです。
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
);
$query = new WP_Query( $args );
if( $query->have_posts() ):
while( $query->have_posts() ):
$query->the_post();
// 投稿を表示するためのコードをここに追加する
endwhile;
// 投稿が見つからない場合のコードをここに追加する
else:
endif;
// クエリをリセットする
wp_reset_postdata();
$args = array(
);
この部分に細かくパラメータを指定して、表示したい記事を絞り込んで表示します。
WP_Queryでよく使うパラメータ
ここからはWP_Query
でよく使うパラメータをご紹介していきます。
投稿タイプの指定する
post_type
投稿タイプを指定するにはpost_type
を使用します。
デフォルト値は「post」です。
$args = array(
'post_type' => 'post',
);
パラメータに指定する値 | 内容 |
---|---|
post | 投稿(デフォルト値) |
page | 固定ページ |
revision | リビジョン |
attachment | 添付ファイル |
nav_menu_item | ナビゲーションメニュー項目 |
カスタム投稿タイプ | 任意のカスタム投稿タイプ名 |
any | リビジョンと’exclude_from_search’がtrueにセットされたものを除き、すべての投稿タイプを含める |
並び順を指定する
order
取得した記事を昇順・降順、どちらの並び順にするかを指定するにはorder
を使用します。
デフォルト値は「DESC」です。
$args = array(
'order' => 'ASC',
);
パラメータに指定する値 | 内容 |
---|---|
ASC | 昇順 |
DESC | 降順(デフォルト値) |
orderby
取得した記事を並び替える時、何を基準に並び替えるかを指定するにはorderby
を使用します。
デフォルト値は「date」です。
$args = array(
'orderby' => 'ID'
);
パラメータに指定する値 | 内容 |
---|---|
none | 順序を指定しない |
ID | 投稿IDで並び替え |
author | 著者で並び替え |
title | タイトルで並び替え |
date | 投稿日で並び替え(デフォルト値) |
modified | 更新日で並び替え |
parent | 投稿/固定ページの親IDで並び替え |
rand | ランダムで並び替え |
comment_count | コメント数で並び替え |
menu_order | 管理画面上の表示順で並び替え 並び替えプラグインなどで使われる値 |
meta_value | カスタムフィールドの値で並び替え パラメータ「meta_key」の指定されている必要がある |
meta_value_num | カスタムフィールドを数値順で並び替え パラメータ「meta_key」の指定されている必要がある |
post__in | パラメータ「post__in」で指定した投稿ID順に並び替え |
並び替えをする際はorder
とorderby
をセットで使用することが多いです。
1ページの表示数やページネーションを指定
nopaging
すべての投稿を表示するか、ページネーションを使用するかを選択します。
デフォルト値はfalse
。
このパラメータは、クエリのページネーションを無効にします。つまり、すべての投稿を1ページに表示します。主にカスタムループで使用され、通常のページネーションを持たないページに適しています。
$args = array(
'nopaging' => true,
);
posts_per_page
1ページに表示する投稿数を指定します。
デフォルトでは、WordPressの設定で指定された値が使用されます。このパラメータを使用して、ページごとの投稿数を制御できます。posts_per_page
の値を-1にすると全件表示になります。
ページネーションを使用する場合は、このパラメータと一緒にpaged
パラメータも指定します。
$paged = get_query_var('paged') ?: 1;
$args = array(
'posts_per_page' => 10,
'paged' => $paged,
);
posts_per_archive_page
1ページに表示する投稿数を指定します。
アーカイブページ専用のパラメータでis_archive()
または、is_search()
がtrue
になるページでは、posts_per_page
パラメータやshowposts
パラメータの値よりも優先されます。
$paged = get_query_var('paged') ?: 1;
$args = array(
'posts_per_archive_page' => 10,
'paged' => $paged,
);
offset
クエリの開始位置を指定します。offset
パラメータを指定すると、paged
パラメータが無視され、ページ送りされなくなります。
また、'posts_per_page'=>-1
の場合、このパラメータは無視されます。offset
パラメータが「5」の場合、クエリの結果が最初の5つの投稿をスキップして取得されます。主にページングされていないクエリで使用されます。
$args = array(
'offet' => 15,
);
paged
何ページ目の投稿を取得するかを指定します。
通常はget_query_var('paged')
で現在のページ番号を指定し、ページネーションを実装する際に使用されます。
$paged = get_query_var('paged') ?: 1;
$args = array(
'paged' => $paged,
);
page
静的なフロントページのページ数を指定します。特定のページ番号を取得するために使用されるパラメータです。通常、WordPressでは、ページ固有のコンテンツを表示する際に使用されます。
$paged = get_query_var('paged') ?: 1;
$args = array(
'paged' => 1,
);
ignore_sticky_posts
先頭固定表示の投稿の扱いをどうするかを指定します。
デフォルト値はfalse
。
スティッキー投稿は、通常の投稿とは異なり、トップに固定されますが、このパラメータをtrue
にすることで無視することが出来ます。
$args = array(
'ignore_sticky_posts' => true,
);
まとめ
いかがでしたか?
多くのパラメータが用意されていますね。実はこんなパラメータもあったんだという発見がありました。
これらを駆使して条件にあった記事を絞り込んでいきたいですね。