2021.04.30

WP_Queryのpost_status初期値について

こんにちは、webエンジニアのゾノ( @ozonosho )です。

本日はWordPressで使用する頻度ベスト5ぐらいには入るであろう関数「WP_Query」についての小ネタです。

WP_Queryは投稿データを取得する関数で、Codexに記載のとおり↓のような感じで利用します。

WordPressテーマ内をいじったことがある人には見慣れた処理だと思います。

この時、WP_Queryに渡す引数にはその時々で必要な条件を入れます。

ここで、「post_status」については記述しないことが多いです。
少なくとも僕はそうでした。

post_statusには初期値として「publish(公開)」が入っているのでわざわざ明記しないで良いと思っていたからです。

しかし、会員制サイトにログインした状態でWP_Queryが発行するSQLを見てみると、なんとpost_statusの条件には「publish」だけではなく「private(非公開)」も含まれていました。

Codexをよーく読むと書いてあるのですが、ログイン状態だとpost_statusに渡される初期値が変わるようです。
非公開ステータスで投稿した内容を自分だけは見れるようにするためですね。

それ自体は親切機能なのですが、、、正直、投稿ステータス「private」を利用してユーザーが投稿するサイトというのは珍しいと思います。
つまりフロント側での表示において投稿ステータス「private」はほぼ利用しない可能性が高いです。

そして、wp_postsやwp_postmetaテーブルのレコード件数が100万件とかになってくると、「publish」だけを取得するのか「publishとprivateどちらも取得するのか」によって、SQLのレコード取得速度に差が出てきます。

当然ながらどちらも取得しようとしたほうが遅くなります。

そのため、投稿ステータス「private」を利用しない会員サイトなのであれば、WP_Queryを利用する際はpost_statusの条件を「publish」のみにするよう明示してあげたほうが良いです。

おわりに

以上、今回の記事ではWP_Queryのpost_status初期値について紹介させていただきました。

当サイトではWordpressのカスタマイズ制作依頼を請け負っています。運営中のサイトで何かお困りのことがある方は、下記の記事を参照のうえ気軽にご相談ください。

どんな機能・要望でもOK!『Wordpressのカスタマイズ制作』はじめました。

こんにちは、webエンジニアのゾノ( @ozonosho )です。 このたびWordpressのカスタマイズ制作をはじめました。......

→この記事を読む
チャレンジを応援する無料オンラインコミュニティ運営中!

生きづらさを抱える人のチャレンジを応援する無料オンラインコミュニティ『Cree』をスタートしました。ただいま参加者100名突破!お互いの目標を共有したり、就労・就職のサポートするサービスを無料で提供しています。

オンラインコミュニティの詳細はこちら

ゾノについて

お仕事のご相談はこちら