Queryセクションの設定と使い方

Viewを作成すると、WordPressのデータベースからコンテンツを抽出して選択した方法でフロントエンドに表示することができます。ここでは、抽出するコンテンツの指定やフィルタを使った絞り込みを行なうQueryセクションの使い方を見ていきましょう。

Viewの基本的な作り方については、コンテンツやデータを抽出して表示する の記事を参照してください。

Content Selection(コンテンツの選択)

Viewの抽出対象となるコンテンツを指定します。対象の選択はまず、「投稿タイプ」、「タクソノミ」、「ユーザー」といったコンテンツ区分を選択したうえで、具体的な投稿タイプ(タクソノミまたはユーザー)をチェックボックスで選択します。

Queryセクションの設定と使い方

投稿タイプを選択する場合の画面例。選択した投稿タイプに属する投稿(格納されているカスタムフィールドの値なども)を抽出します。

Queryセクションの設定と使い方

タクソノミを選択する場合の画面例。選択したタクソノミに属するタームを抽出します。

Queryセクションの設定と使い方

ユーザーを選択する場合の画面例。選択した権限グループに属するユーザーを抽出します。

  • 1つのViewで異なるコンテンツ区分を同時に抽出することは出来ませんが、Viewをネスト(入れ子)にすることで、異なるコンテンツ区分を組み合わせた抽出をおこなうこともできます。
  • 同一のコンテンツ区分内で、複数の投稿タイプ等を同時に抽出することは可能です。

コンテンツ区分と作れるViewの関係

Viewで指定するコンテンツ区分によって、WordPressのデータベースから抽出できる内容が変わります。例えば以下のような複数のカテゴリーや投稿者によって構成されるマガジンサイトの場合を見てみましょう。

Queryセクションの設定と使い方

コンテンツ区分の選択によって抽出できる内容が変わります。

以下の説明では、便宜、指定するコンテンツ区分に応じて「投稿タイプ型View」「タクソノミ型View」「ユーザー型View」と呼ぶことにします。

対象の投稿を抽出する「投稿タイプ型View」はイメージしやすいかと思いますが、「タクソノミ型」や「ユーザー型」は、どのように使うのでしょうか? 「タクソノミ型View」や「ユーザー型View」は単独で使う場合、単純にサイト内のタクソノミ一覧、ユーザー一覧(およびそれに付随するフィールド)を出力するだけで、あまり使い道がないように思えるかもしれませんが、実は「投稿タイプ型View」をネストして使うことでその真価を発揮します

「タクソノミ型」や「ユーザー型」のViewに「投稿タイプ型」をネスト(入れ子)すると、マガジンサイトのトップページのようなカテゴリー別の新着記事一覧を実装することができます。前掲の図にあるようなWordPressのデータなら、下の図のように出力されます。

Queryセクションの設定と使い方

タクソノミ型に投稿タイプ型をネストしたViewの出力イメージ

Queryセクションの設定と使い方

ユーザー型に投稿タイプ型をネストしたViewの出力イメージ

なお、投稿タイプ型Viewだけでも、タクソノミやユーザーを絞り込むことで上記と同じようなことは実現可能ですが、その場合はタクソノミやユーザーごとにViewを作る必要があるので効率的方法ではありません。

Query Options(クエリオプション)

データを抽出する際のオプションのON・OFFを切り替えます。選択したコンテンツ区分に応じてオプションの内容は以下のように変化します。なおこれらのオプションはその性質上、有効にするとViewsプラグインでこのクエリをキャッシュしなくなるようです。

投稿タイプ型

Don’t include current page in query result にチェックを入れると、表示中のページをViewの抽出対象から除外します。例えば、サイドバーや本文の後に関連記事を表示するViewを配置する場合、「関連記事をクリックしたら今見ていたページと同じだった」というようなユーザビリティの低下を防ぐことができます。

タクソノミ型

主に、未使用(空)のタームの取り扱いを制御するためのオプションです。

Don’t show empty terms
未使用のターム(チェックの入っていないターム)は出力結果から除外します。
Include terms that have non-empty descendants
階層型のタクソノミで、親タームにチェックが入っていなくても、子孫タームにチェックが入っている場合は、親タームも出力します。このオプションは上の「Don’t show empty terms」に優先します。
Include children in the post count
タームの投稿数をカウントする際、子タームの投稿数も含めてカウントします。

例えば、親タームが「スポーツ」で、子タームに「野球・サッカー・バスケットボール」がある場合に、サッカーだけにチェックをいれた投稿は、タクソノミ型Viewで以下のように取り扱われます。

Queryセクションの設定と使い方

オプションによって、空のタームの取り扱いが変化します。

ユーザー型

Don’t show current loged user にチェックを入れると、現在サイトにログインしているユーザーを出力しません。会員専用のクローズドなコミュニティサイトを作るときなどに使えそうなオプションで、例えば、ログイン中のユーザーAがサイトを閲覧すると、ユーザー型Viewの出力結果にAは表示されません。しかしユーザーBなどA以外のユーザーがサイトを閲覧した場合には、出力結果にAが表示されます。従って、単純に「著者一覧」といったような使い方であればチェックを入れる必要はないでしょう。

Ordering(コンテンツの並び順)

抽出したデータを指定した方法でソート(並べ替え)します。このオプションもViewで指定するコンテンツ区分によって並べ替えに使えるキーが変化します。なお、キーの右側にあるドロップダウンリストで昇順(Ascending)・降順(Descending)を切り替えることができます。

投稿タイプ型で利用できるソートキー
  • Post date(投稿日順)
  • Post title(タイトル順)
  • Post ID(投稿ID順)
  • Post author(作成者名順)
  • Post type(投稿タイプ順)
  • Last modified(最終更新日順)
  • Menu order(投稿一覧画面順)
    投稿一覧で表示される投稿の順番で並べ替えます。通常は公開日順に並んでいますが、「Intuitive Custom Post Order」プラグインなどで、投稿を並べ替えている場合はその順が反映されます。
  • Random order(ランダム)
  • その他、作成したカスタムフィールドなど
    ※ 当然のことですが、性質上、並べ替えの基準にならないカスタムフィールド(画像など)を指定しても機能しません。
Secondary sorting(第2ソートキー)

投稿タイプ型のViewでは上記に加えて、第2の並べ替え基準を設定することができます。上記で指定したキーで同順位のコンテンツは第2ソートキーを基準に並べ替えられます。なお、第2ソートキーではカスタムフィールドを指定することはできません。

タクソノミ型で利用できるソートキー
  • Term ID(タームID順)
  • Post count(投稿数順)
  • Term name(ターム名順)
    デフォルト値です。
  • Term slug(タームスラッグ順)
  • Term group(タームグループ名順)
  • No order(並べ替えなし)
ユーザー型で利用できるソートキー
  • User login(ユーザーログイン順)
  • User ID(ユーザーID順)
  • User name(ユーザー名順)
    デフォルト値です。
  • User display name(表示名順)
  • User nicename(nicename順
    ※ ニックネームではありません。
  • User email(メールアドレス順)
  • User URL(URL順)
  • User registered date(登録日順)
  • User order on a filter(順次適用)
    ユーザー名 → メールアドレス → ユーザーログインパラメーターといったように、ソート基準が見つからない場合に順次基準を適用するようです。詳しい順番は不明。
  • User post count(投稿数順)

上記については、WordPress Codex「Order & Orderby パラメータ」の項目が参考になるかもしれません。

Limit and Offset(出力数の制限とオフセット≒先頭のスキップ)

Display items
Viewで抽出するレコード数(≒コンテンツの数)を最大50以下に制限することができます。デフォルト値は No Limit(無制限)です。
Skip first items
Viewで抽出したレコードのうち、指定した数のレコードぶんを先頭から除外(≒スキップ)して出力します。デフォルト値は None(スキップなし)です。

Query Filter(クエリフィルタ)

Viewで抽出されたコンテンツを、コンテンツ区分とは異なる条件によってさらに絞り込みます。なお組み合わせることのできる条件は、選択したコンテンツ区分によって変化します。Queryフィルタの使い方については別途記事を参照してください。

Toolset JP Guide

ページ上部へ戻る