KUHAKU
no
MEMOCHO

WP_Queryを使い倒そう【マスター編 ①】投稿者・カテゴリー

WP_Queryを使い倒そう【マスター編 ①】投稿者・カテゴリーのサムネイル

前回の続きです。

WP_Queryを使い倒そう【基本編】 | KUHAKU no MEMOCHO
kuhaku.org

↑↑
基本編

前回の記事では、WP_Queryとは何なのかを書いていきましたが、今回は実際にその使用方法を例題とともにご紹介していこうかと思います。

ご紹介していくのはパラメータ。つまり前回の記事の$args、指示の部分になります。

何やら複雑な気がしますが安心してください。こ奴らはわかってしまえばとても単純です

この記事は連載記事です。

パラメータの設定

さて、ここからいよいよWP_Queryに指示をバンバン出していくのですが、方法はいたってカンタン。
この$argsに主にパラメータの配列をぶち込んでいきます

ここからは実際にコードを見ながら説明をしていこうかと思います。

投稿者のパラメータ

まずは投稿者で記事を絞り込みたいときに使用する投稿者のパラメータを見ていきます。

パラメータを複数設定するときは上記のように配列で記述します。
ここで出てきたのはまず4つのパラメータです。

上から順に見ていきます。

author

このパラメータではユーザーのIDを指定していきます。
例えばユーザーIDが「1」の人の記事のみを取り出したいときは以下のような記述になります。

とっても簡単ですね!これを応用するとシングルページでその記事の投稿者が書いたオススメ記事を表示したりすることも可能です。
次回の応用編でやります。今回やりました。

author_name

コチラのパラメータはあまり使用しませんので余り書く気が起きませんが、一応書いておきます。
こいつにはユーザーのuser_nicenameを指定します。ここで大事なのが姓・名・ニックネームではないということです。

user_nicenameとはつまりワードプレスの変更できない曲者のユーザー名です。
ここはとても間違えやすいので注意して使用しましょう。

user_nicenameが「admin」の人の記事を取り出す記述は以下になります。

author__in

これはタマに使用するので覚えておくと便利かと思います。

一番最初に紹介したauthorは一人の特定人物でしたが、一人ではなく複数の投稿者の記事を表示したいということがあると思います。
そんなときにこのauthor__inを使用します。

例えば、ユーザーIDが「1」の人と「5」の人の記事を取り出す記述はこのような感じです。

この設定はワードプレスで複数ユーザー投稿型のサイトを作った時に投稿者の関連記事一覧に管理者の記事をまぜまぜするという悪だくみなどに使用できますね!

author__not_in

投稿者の最後のパラメータはauthor__not_inです。
こやつはauthor__inの真逆特定の投稿者を除外する際に使用します。

管理者の投稿を除外して表示したい場合など実は極々たまに出てきます。そんなときに使用します。

ユーザーIDが「2」の人を除外する場合はこんな感じです。

以上が投稿者で記事を絞り込むパラメータの一覧でした。
ここまで書いていうのもなんですが投稿者パラメータはauthorとauthor__in以外はほぼ出現タイミングがありませんので覚える必要はありません。
分からなくなったときはこの記事を見に来てください。笑

カテゴリーのパラメータ

お次はカテゴリーで絞り込むパラメータを見ていきましょう。
コチラはとてもよく使います。※個人の感想です。

先程の投稿者パラメータとほぼ同じですが、今回は後述するcategory__andとcategory__inの違いを覚えておかないと急に足止めを食らうことが多々あります。

それでは早速パラメータを見ていきましょう。

cat

コチラはカテゴリーIDを指定して使用します。

例)カテゴリーIDが「13」の記事のみの一覧を取得する。

先程のauthorと同じような使用方法です。こちらも関連記事の表示などに使えます。

category_name

これも先述のauthor_nameと似ていますね。
注意点はカテゴリー名ではなくスラッグを使用するということです。

例)カテゴリースラッグが「wordpress」の記事一覧を取得する。

コチラはやはり使用することがほぼないパラメータといっても過言ではないでしょう。

category__and

投稿者パラメータの時にはなかった「__and」ですが、これはカテゴリーならではのもので、指定カテゴリーに含まれるすべてが対象となります。
例えばAという親カテゴリーを指定した場合、A-1、A-2といったAの子カテゴリの記事までが対象となります。

例)カテゴリーIDが「24」と「37」に含まれるすべての記事を取得する。

これで仮にカテゴリーIDが24か37の記事ではなくてもその記事のカテゴリーの親カテゴリーが24か37のどちらかであれば記事を取得することができます。

category__in

こちらは単純に指定したカテゴリーIDの記事のみを取得します。
上記のcategory__andの例でいうとカテゴリーIDが24か37に設定されている記事のみが対象となり、それらの子カテゴリは対象に含まれません。

例)カテゴリーIDが「24」と「37」と「42」の記事のみを取得する。

category__not_in

ここまでくればコイツの使い方はもうわかるはず。
指定したカテゴリーIDの記事を除外してそれ以外を取得します。

例)カテゴリーIDが「3」の記事を除外してその他すべてを取得する。

以上、カテゴリーのパラメータのご紹介でした。

途中で書くのが雑になってしまったのは申し訳ないですがなんとなく伝われば幸いです。

上記を用いた実践的使い方

本当はこの記事ですべてのパラメータをご紹介しようと思っていましたが、ふとした時に記入文字数を見て先のことを考えてしまい気分が一気に萎えてしまったのでマスター編は何回かに分割して書くことにします。

その代わり、本来は次回記事にて加工と思っていた応用編をこの場で書いていきたいと思います。

シングルページで同一投稿者の記事一覧を取得する

まずは、初期のほうに書いたシングルページにて同一投稿者の記事のみを絞り込んで取得する方法です。

シングルページでは、ループ内ではthe_author_meta()を使用して簡単に投稿者のIDが取得できます。
それを利用して同一投稿者の記事を取り出してみましょう。

少々長くなってしまいますが、これで同一投稿者の記事データを取得できます。

順を追って解説するとシングルページのループ中(終了前)にthe_author_meta(‘ID’)を使って$author_IDに投稿者のユーザーIDを格納します。

これを使ってWP_Queryで投稿者パラメータのauthorに$author_IDを指定

たったこれだけで記事の投稿者と同一投稿者の記事のみを絞り込むことができます。

シングルページで自分以外の投稿者かつ同一カテゴリーの記事の一覧を取得する

こういうことは実践ではあまり起きませんが、ワードプレスで会員制コミュニティを作成したときなどに使用できます。
少々複雑になりますが一つずつゆっくりとみていきましょう。

さあ、だらだらと長いですがゆったり見ていきましょう。

前半、13行目までは先程と変わりません。
新しくなった部分は16行目でget_the_category()を使って$categoriesに記事のカテゴリー情報を入れます。

同一カテゴリーの記事を取得するために、当然カテゴリーが複数設定されている記事もあると思うのでcatではなくcategory__andを使用します。
そのためにはまず、カテゴリーIDの配列を作成します。

この部分の詳細はまた日を追って別記事でご紹介しますが、ここで$cats_arrayにカテゴリーIDの配列を入れています。

必要な情報はこれでそろったので早速WP_Queryのパラメータに設定をしていきます。
まずは自分以外なのでauthor__not_inで自分以外を指定します。このとき、値は配列でなければいけませんが、$author_IDはただの整数なのでarray()に格納して配列化しています。

そして、カテゴリーの条件で絞り込むために今回はcategory__andを使用しました。※特に意味はありません。category__inでも可です。

さあ、以上でこの普通にワードプレスを使用している分には到底出くわすことのない絞り込み条件を達成しました。

このように、WP_Queryを使用すると様々な絞り込みや並び替えが可能になります。

次回は、マスター編第二弾としてタグとタクソノミーのパラメータについて書いていこうかと思います。
以外にも当ブログ2発目のブログネタにしてとんでもないものを引き当ててしまったようで少し後悔していますが、めげずに一通りは書き終えるまで頑張ります。

現在の文字数が。。。

ああ、少しアニメでも見てリフレッシュします。

こういう時はYouTubeとhulu、primeにただただ感謝するんだ。そう。こういうときだけね。

FB Comment