KUHAKU
no
MEMOCHO

WP_Queryを使い倒そう【マスター編 ③】投稿・固定ページ・パスワード

WP_Queryを使い倒そう【マスター編 ③】投稿・固定ページ・パスワードのサムネイル

どうも、早四回目のWP_Queryを使い倒そうシリーズです。
今回でクソ多いWP_Queryのパラメータの約半分くらい進みましたかね。

この前置きで書くこともほとんどなくなりましたよ。
こんなときは自分で自分の空っぽさにことごとく気付かされますね。

ああ、そういえばインスタグラム始めてみました。
インスタではこのブログでは書かないような行きたいお店とか気になったものとかフォトジェニック的なものを投稿したりしなかったり。

空白さん(@kuhaku.m) • Instagram写真と動画
www.instagram.com

フォローしてくれてもいいんですよ?特に面白いことはないですが

前置きはここら辺にして次へ進みましょう。
ここを乗り越えればあとはチョロいのでサックと終わらせていきましょう。

パラメータの設定

今回は投稿と固定ページ、パスワードのパラメータを見ていきます。
リファレンスでは、投稿ステータスや投稿タイプなどは別々に解説をしていますが、一緒に見たほうが分かりやすいので当サイトでは一緒に見ていきます。

投稿と固定ページのパラメータ

投稿と固定ページは実は「post_type」すなわち投稿タイプが違うだけなので設定できるパラメータはほぼ一緒
違うものと言えば固定ページ用に用意されているものがほんの少しだけあることかな。

ここでいう投稿とは通常の投稿に加えてカスタム投稿タイプの投稿も含みます。

この項目たちはとても良く使うので覚えたほうが便利。

post_type

このパラメータは文字のとおり投稿のタイプを指定するものです。
デフォルトは投稿である「post」になっていますが注意しなければならないのが前回の記事で見たtax_queryに値が入っているときはデフォルトで「any」が入ります。
まあそのままでも基本的には問題はないかと思いますが、投稿タイプを跨いで使用するタクソノミーを作成していた場合は注意が必要です。

値として指定できるものは以下になります。

  • ‘post’ – 投稿。
  • ‘page’ – 固定ページ。
  • ‘revision’ – 履歴 (リビジョン) 。
  • ‘attachment’ – 添付ファイル。
  • ‘nav_menu_item’ – ナビゲーションメニュー項目。
  • ‘any’ – リビジョンと ‘exclude_from_search’ が true にセットされたものを除き、すべてのタイプを含める。
  • ‘カスタム投稿タイプ’ – (例えば ‘movies’)

この中で注意するべきなのがattachmentです。
添付ファイルを指定するこの値ですが、添付ファイルはデフォルトでpost_statusが「inherit」になっていますので後述のpost_statusをinheritかanyに指定してあげる必要があります。

それでは例を見ていきましょう。

例)カスタム投稿タイプ「movies」の記事一覧を取得する。

カスタム投稿タイプの場合はスラッグを指定してあげればそのタイプの投稿が取得できます。
また、固定ページの一覧を取得するには下のようになります。

またpost_typeは配列での指定も可能です。

例)カスタム投稿タイプ「restaurants」とカスタム投稿タイプ「shops」の記事一覧を取得する。

post_status

投稿ステータスで記事の絞り込みを行うパラメータになります。投稿ステータスとは、公開や下書きといった設定のことです。
設定できる有効な値は以下になります。

  • ‘publish’ – 公開された投稿もしくは固定ページ
  • ‘pending’ – レビュー待ちの投稿
  • ‘draft’ – 下書きの投稿
  • ‘auto-draft’ – コンテンツのない、新規作成された投稿
  • ‘future’ – 予約公開設定された投稿
  • ‘private’ – ログインしていないユーザーから見えない設定
  • ‘inherit’ – リビジョン。
  • ‘trash’ – ゴミ箱に入った投稿。 (Version 2.9 以降で利用可能)。
  • ‘any’ – ‘exclude_from_search’ が true にセットされているもの(つまり trash と auto-draft)を除き、すべてのステータスの投稿を取得する。

投稿ステータスの中で少しややこしいのがinheritかと思いますがリビジョンを指定することはほぼないと思うので説明は省きます。

例)公開済みの投稿とレビュー待ちの投稿の記事一覧を取得する。

このパラメータは主にワードプレス標準搭載の管理画面外にユーザー用の管理画面を作成するときなどに使います。

post_statusとauthorを組み合わせて使用すればユーザー毎の投稿管理画面を簡単に作成できます。
その方法についてはまた別記事にてやることにします。

p

こちらは投稿のIDを指定して取り出すパラメータです。もはや使い方の説明は不要ですね。

例)投稿IDが「338」の記事を取得する。

name

投稿のスラッグを用いて記事を取得するパラメータです。使用頻度は小ですが使う場面がいつか来るかもしれません。

例)投稿スラッグが「wordpress-wp-query」の記事を取得する。

page_idとpagename

こいつらは先述のpとnameの固定ページ版です。
page_idは固定ページのIDを、pagenameは固定ページのスラッグを使用します。使用方法は全く持って一緒です。

例)固定ページのIDが「21」のページを取得する。

例)固定ページのスラッグが「about-us」のページを取得する。

post_parent

このpost_parentはpage_idやpagenameと同じく固定ページ用のパラメータで、子ページを取得する際に使用します。

例)ページIDが「4」の固定ページを親に持つ全ての子ページを取得する。

このパラメータは非常に便利で固定ページの一覧を階層ごとに表示する等に使えますね。

ちなみに子ページを除外して最上階層の固定ページのみ取得するには値を0に設定します。

post_parent__inとpost_parent__not_in

この形はもう見慣れたのではないでしょうか?
お察しのとおりpost_parent__inは指定した配列のIDを親に持つ子ページを、post_parent__not_inはその逆を取得するパラメータです。

例)ページIDが「4」と「7」の固定ページを親に持つ全ての子ページを取得する。

post__inとpost__not_in

彼らは説明不要の複数投稿IDを指定して記事を取得するパラメータになります。

もはやこの型の説明をする必要があるのかってくらい頻出の型ですね。

post__not_inは関連記事を取得する際に現在表示中の記事を除外するなどに使えます。

例)投稿IDが「231」と「782」の記事を除外してその他記事の一覧を取得する。

これで投稿と固定ページ関連のパラメータの紹介が終了です。

少し長めでしたがほぼ見慣れた形になってきたかと思います。
記事を書いている僕は各内容があまりなくて楽なのかツラいのかよく分からなくなってきていますが、このシリーズ最初から読んでいる方は理解のスピードがめちゃくちゃレベルアップしているんじゃないでしょうか?

そうだと勝手に決めつけてこの後も記事を書いていくのでわかんねーよという方はまた最初から読み返してください。笑

パスワードのパラメータ

会員専用コンテンツ等を作るときには記事にパスワードをかけて限定公開することがあります。
そんなときにパスワードをかけた記事のみの一覧を表示したいとなった時、下記パラメータを使ってカンタンに取得できます。

has_password

コイツは先述のパスワードをかけた記事のみの一覧を取得する際に使用します。
trueの際は、パスワード保護がされている記事のみを、falseの時はパスワード保護がない記事のみの取得ができます。
パスワードに関係なく記事を取得する際はnullを指定します。

例)パスワード保護のかかった記事の一覧を取得する。

post_password

このパラメータは特定のパスワードで保護された記事のみを取得します。
情報サイトなどで会員種別ごとにパスワードを変えて保護をしている場合などに使えますね。

例)「gZa7fjsK1」というパスワードで保護されている記事の一覧を取得する。

以上パスワードのパラメータでしたが、とってもカンタンでしたね。

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

それでは早速今まで出てきたパラメータを使用した実践的な使い方を見ていきましょう。
これくらいのパラメータが理解できればあらかたのことはできるようになり、ここら辺からワードプレス面白いじゃん状態に突入します。

僕の場合はこの流れの勢いのままWordPressからPHPついではrailsという泥沼に足を踏み入れてしまいました。笑

カテゴリー情報をもとに現在表示中の記事を除く関連記事を表示する

よくあるカテゴリーをもとにした関連記事の取得をしていきます。
今回は関連記事一覧を取得する際に現在表示中の記事が一覧に入ってしまうと意味がないのでそちらを除外して記事の一覧を取得しようと思います。

前回の記事の実践例と似ていますが、今回は投稿者の除外ではなく記事の除外なので13行目で現在の投稿のIDを取得し、34行目で除外する指定をしています。

カスタム投稿タイプ「books」でパスワード保護をしている記事の一覧を表示する。

こちらは今回紹介したパラメータの組み合わせですがこのように使うことはちらほらあるのでご紹介します。

これで大体の記事取得はできるようになってきましたね。

今までやってきたパラメータも含めて一記事で全部見られるように一通り書き終わったらまとめの記事を書こうかと思います。

それではまた次回。

FB Comment