Stringをget_posts
のような関数に渡し、その文字列が意味のあるクエリ文字列ではない場合(get_posts( '')など)、この関数はデフォルトのクエリの結果(最後の5つの投稿など)を返します。文字列が意味のある問い合わせ文字列だったのか、それとも関数が単にデフォルトに戻ったのか、そうではなかったのか、この振る舞いを抑制することができますか。
メインのループには影響を与えたくないので、デフォルトのquery-settingsを変更することは解決策ではなく、プラグイン内のget_posts
の関数呼び出しだけにします。
クエリの動作を見ると 、これは当てはまりません...
何が起こるかというと、あなたの条件は非常に複雑な一連の条件を使って特定のデフォルトとマージされるということです。それの終わりに、あなたはあなたの投稿を得るために走るSQL
を持っています。システムはあなたの条件が「がらくた」であるかどうかを確認してからそれを使うかどうかを決定しません。これらの条件は、有効なSQL
ステートメントを生成する方法でクエリにマージされるだけです。とにかく「がらくた」ではないのか、クエリがどのようにしてわかるのかわからない。
私ができると思うことはpre_get_posts
にフックし、あなたが "crap"または "not crap"を決定するためにあなたが定義するいくつかの条件のセットに従って問い合わせvarsをチェックすることでしょう。
あなたが提供する特定の例に関しては、 get_posts
は引数を渡さなかった場合 意図的に最新の投稿を検索するために書かれています。
ちなみにnew WP_Query('')
は何も返しませんが、基本的に@ toschoのコメントでの提案に同意します - サニタイズされた文字列を渡します。送信する前に、関数に送信している内容を知ってください。文字列が空の場合、または他の要件を満たしていない場合は、get_posts
関数をまったく呼び出さないでください。