WordPressでは投稿データをWP_Queryクラスで取得することができます。
その際に、様々なパラメーターを引数に設定することで、表示する投稿データを変えることが可能です。
投稿を3件取得したり、特定のカテゴリーの投稿を取得したり、WordPressをカスタマイズする上でWP_Queryを柔軟に操作すること必要だと思っています。
ですが、できることがありすぎて情報量が多く、一度ではとても覚えきれません。
なので個人的によく使うコードを記事にして、いつでもコピペできるようにしました。
一度で全ては書ききれないので、これからも随時更新していきます。
↓雛形となるコードはこちら
<?php
//$argsのパラメーターを変えていく
$args = array(
'post_type' => 'post', //投稿タイプ
'posts_per_page' => -1, //全ページを取得
);
$the_query = new WP_Query($args);
if ($the_query->have_posts()) :
while ($the_query->have_posts()) : $the_query->the_post();
/* ループ内の記述 */
endwhile;
endif;
wp_reset_postdata();
?>
こちらのコードはカスタマイズする際に見慣れているかと思います。
WP_Queryに渡すパラメーターを変えることで、投稿データのさまざまな情報を得ることができます
目次
投稿者
投稿者に関連する投稿を取得するためのパラメータです。
投稿者に関するパラメーター
パラメーター | 型 | 説明 |
---|---|---|
author | 整数 | 投稿者ID |
author_name | 文字列 | ニックネーム |
投稿者ID1の投稿を取得
$args = array(
'author' => 1, // 投稿者ID
);
$the_query = new WP_Query($args);
カテゴリー
カテゴリーに関するパラメーター
パラメーター | 型 | 説明 |
---|---|---|
cat | 整数 | カテゴリーID |
category_name | 文字列 | カテゴリースラッグ |
特定のカテゴリーIDを持つ投稿を取得
$args = array(
'cat' => 1 // カテゴリーID
);
$the_query = new WP_Query($args);
特定のスラッグのカテゴリーを持つ投稿を取得
$args = array(
'category_name' => 'news' // カテゴリースラッグ
);
$the_query = new WP_Query($args);
タグ
タグに関するパラメーター
パラメーター | 型 | 説明 |
---|---|---|
tag | 文字列 | タグスラッグ |
tag_id | 整数 | タグID |
スラッグが「WordPress」の投稿を取得
$args = array(
'tag' => 'WordPress' // タグスラッグ
);
$the_query = new WP_Query($args);
タグIDが「1」の投稿を取得
$args = array(
'tag_id' => 1 // タグID
);
$the_query = new WP_Query($args);
タクソノミー
申し訳ありません。後ほど執筆する予定ですm(_ _)m
キーワード検索
キーワード検索に関するパラメーター
パラメーター | 型 | 説明 |
---|---|---|
s | 文字列 | 検索キーワード |
キーワードに「keyword」を含む投稿を取得
$args = array(
's' => 'keyword' // 検索するキーワード
);
$the_query = new WP_Query($args);
投稿,ページ
投稿,ページに関するパラメーター
パラメーター | 型 | 説明 |
---|---|---|
p | 整数 | 投稿ID |
name | 文字列 | 投稿スラッグ |
page_id | 整数 | ページID |
pagename | 文字列 | ページスラッグ |
post_parent | 整数 | ページIDを指定し、その子ページを取得 |
投稿IDが「1」の投稿を取得
$args = array(
'p' => 1 // 投稿ID
);
$the_query = new WP_Query($args);
スラッグが「kotei-page」のページを取得
$args = array(
'pagename' => 'kotei-page' // ページスラッグ
);
$the_query = new WP_Query($args);
親ページIDが「1」の子ページを取得
$args = array(
'post_type' => 'page',
'post_parent' => 1
);
$the_query = new WP_Query($args);
投稿タイプ
投稿タイプに関するパラメーター
パラメーター | 型 | 説明 |
---|---|---|
post_type | 文字列、配列 | 投稿タイプを指定。デフォルトはpost |
post_typeがとれるパラメーター
投稿タイプ | 説明 |
---|---|
post | 投稿 |
page | 固定ページ |
revision | リビジョン |
nav_menu_item | ナビゲーションメニュー項目 |
固定ページの投稿を取得
$args = array(
'post_type' => 'page' // 固定ページを指定
);
$the_query = new WP_Query($args);
投稿とカスタム投稿を取得
$args = array(
'post_type' => array(
'page', // 固定ページを指定
'custom' // カスタム投稿で設定した投稿タイプ
)
);
$the_query = new WP_Query($args);
投稿ステータス
投稿ステータスに関するパラメーター
パラメーター | 型 | 説明 |
---|---|---|
post_status | 文字列、配列 | 投稿ステータスを指定する。デフォルトのは publish |
post_statusがとれるパラメーター
投稿ステータス | 説明 |
---|---|
publish | 公開された投稿 |
private | ログインしていないユーザーには見えない投稿 |
公開された投稿
$args = array(
'post_status' => 'publish' // 公開された投稿
);
$the_query = new WP_Query($args);
並び替え
並び替えに関するパラメーター
パラメーター | 型 | 説明 |
---|---|---|
post_status | 文字列、配列 | DESC(降順)またはASC(昇順)を指定。デフォルトはDESC |
orderby | 文字列、配列 | 並び替えの対象を指定。デフォルトはdate |
ordeybyで使えるパラメーター
パラメーター | 説明 |
---|---|
none | ソートを指定しない |
ID | 投稿IDでソートする |
author | 投稿者でソートする |
title | タイトルでソートする |
name | 投稿スラッグでソートする |
type | 投稿タイプでソートする |
date | 投稿日でソートする |
modified | 最終更新日でソートする |
parent | 親の投稿IDでソートする |
rand | ランダム順 |
comment_count | コメント数でソートする |
タイトルの降順で投稿を取得
$args = array(
'orderby' => 'title', // タイトルでソート
'order' => 'DESC', // 降順
);
$the_query = new WP_Query($args);
投稿日とタイトルの降順で投稿を取得
$args = array(
'orderby' => 'date title', // 投稿日とタイトルでソート
'order' => 'DESC', // 降順
);
$the_query = new WP_Query($args);
投稿日を降順、タイトルを昇順で投稿を取得
$args = array(
'orderby' => array(
'date' => 'DESC', // 投稿日を降順
'title' => 'ASC' // タイトルを昇順
)
);
$the_query = new WP_Query($args);
ページ送り
ページ送りに関するパラメーター
パラメーター | 型 | 説明 |
---|---|---|
nopaging | 真偽値 | 全ての投稿を取得するか、ページ送りを使用するかの選択。デフォルトはfalse |
posts_per_page | 整数 | 取得する投稿の件数を指定。-1を指定すると、全ての投稿を取得 |
offset | 整数 | オフセット値を指定。この値で指定した件数の投稿を先頭から除外して投稿を取得 |
paged | 整数 | ページ数 |
page | 整数 | 固定ページをフロントページに使用している場合のページ数 |
3件の投稿を取得
$args = array(
'posts_per_page' => 3 // 3件指定
);
$the_query = new WP_Query($args);
全件の投稿を取得
$args = array(
'posts_per_page' => -1 // 全件指定
);
$the_query = new WP_Query($args);
5ページ目の投稿を取得
$args = array(
'paged' => 5 // 5ページ目を指定
);
$the_query = new WP_Query($args);
先頭から2件ずらして、5件の投稿を取得(3〜8)
$args = array(
'posts_per_page' => 5, // 5件指定
'offset' => 2 //オフセット数の指定
);
$the_query = new WP_Query($args);
最後に
まだまだできることはたくさんありますが、一度に書ききれないためこれからも随時更新していきます。