フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【WordPress】WP_Queryの使用方法とよく使うパラメータまとめ

WordPress
WP_Query
まとめ

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

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順に並び替え

並び替えをする際はorderorderbyをセットで使用することが多いです。

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,
);

まとめ

いかがでしたか?
多くのパラメータが用意されていますね。実はこんなパラメータもあったんだという発見がありました。
これらを駆使して条件にあった記事を絞り込んでいきたいですね。