まず結論
suppress_filters は、WP_Query のSQLや取得結果へ作用する一部のフィルターを抑制するかを決める引数です。true で抑制します。
多言語プラグインなどがフィルターで結果を調整しているサイトでは、思わぬ投稿が混ざる原因になります。目的なしに切り替えません。
どういう時に使うか
テーマやプラグインの posts_where、posts_join、the_posts などの影響を、特定クエリで受けたくない時に検討します。
WP_Query の既定値は false です。一方、get_posts() は既定引数として suppress_filters => true を渡すため、呼び出し方法で挙動が違います。
どのフィルターを止めたいのか特定できていない場合は、この引数で一括回避せず、原因となるフックを先に調べます。
近い引数との違い
remove_filter() は登録済みの特定コールバックを外す操作です。suppress_filters はその WP_Query 実行中のフィルター適用を抑えるクエリ引数です。
キャッシュや総件数の性能設定とは役割が違い、取得結果そのものが変わり得ます。
Builderでの扱い
WP Query Builder では true / false を直接指定できますが、詳細設定として扱います。通常は未指定のままにします。
多言語、会員制、公開範囲などのプラグインを使う環境では、生成コードを本番へ入れる前に対象投稿を比較します。
使いどころ・避けどころと実践確認
プラグインやテーマがSQLへ加えるフィルターを抑える必要があり、影響するフックを特定できた時に検討します。
結果が合わない原因を調べずに、外部処理をまとめて無効化するスイッチとして使いません。
WP_Query と get_posts() では既定値が異なり、多言語・権限・検索拡張まで外れる可能性があります。
フィルターを止めると検索結果だけでなく多言語や権限処理まで外れることがあるため、影響するフックを特定してから使います。
有効なフック一覧、指定前後のSQLと取得できた投稿ID、利用者権限・言語を記録し、必要な差だけか確認します。
WordPressの仕様で確認するポイント
公式の WP_Query ソース説明で既定値と、false の時に適用される各フィルターを確認できます。
get_posts() を使う場合は、その関数が異なる既定値を渡す点も合わせて確認します。
公式リンク
公式ドキュメント
最後は、値を変える目的と、変えた時に失う情報を一緒に確認します。
最後に確認したいこと
- 止めたいフィルターを特定した
- WP_Queryとget_postsの既定値の違いを確認した
- 多言語や公開範囲への影響をテストした
- 単なる性能設定として使っていない
公式リファレンス
仕様や原文の説明も確認したいときは、公式ドキュメントと整理ページをあわせて見ると理解しやすくなります。
この記事の検証情報
検証環境
- WordPress
- 7.1
- PHP
- 8.3.33
- テーマ
- wpq-media + DDEV
- 対象
- カスタム投稿 / taxonomy / meta_query
更新履歴
- 2026年5月26日 glossary 用の初回ドラフトを作成
- 2026年8月15日 公式資料を再確認し、用語集として本文と判断材料を再構成
この用語を活用する
あとで見返す・共有する
お気に入りに保存できます。役に立ったポイントは、いいねや共有で教えてください。
他の用語も続けて確認できます
似た用語や周辺知識をまとめて見たいときは、用語集トップから探すと迷いにくくなります。