get_posts – выясните, была ли querystring испорчена и используется резерв

Если мы передадим String таким функциям, как get_posts , и эта строка не является значимой кнопкой (для примера get_posts ('')), функция возвращает результаты запроса по умолчанию (последние пять сообщений или такие). Можно ли либо подавить это поведение, либо, что еще лучше, выяснить, была ли строка значащей инициализацией или если функция просто вернулась к умолчанию, значит, это не так?

Изменение настроек запроса по умолчанию не является решением, потому что я не хочу влиять на основной цикл, но только вызов функции get_posts в плагине.

Solutions Collecting From Web of "get_posts – выясните, была ли querystring испорчена и используется резерв"

Если вы посмотрите, как работает запрос , это не случай …

  1. Проверьте, не возвращаются ли возвращенные условия запроса
  2. Else запускает резервный запрос

Случается, что ваши условия объединены с определенными значениями по умолчанию с помощью очень сложной последовательности условных выражений. В конце этого у вас есть SQL который запускается для получения ваших сообщений. Система не проверяет, являются ли ваши условия «дерьмом», а затем решили использовать их или нет. Эти условия просто объединяются в запрос таким образом, который генерирует действительный SQL . Я не уверен, как запрос будет знать, что есть и не является «хреном» в любом случае.

Единственное, что я могу придумать, – это подключиться к pre_get_posts и проверить vars запросов в соответствии с определенным набором условий, которые вы определяете, чтобы определить «дерьмо» или «не дерьмо».

Что касается конкретного примера, который вы предоставляете, get_posts намеренно записывается для получения последнего сообщения, если не передано никаких аргументов .

new WP_Query('') , кстати, ничего не вернет, но по существу я согласен с предложением @ toscho в комментарии – передать санированную строку. Знайте, что вы отправляете в функцию перед отправкой. Если строка пуста или не удовлетворяет каким-либо другим требованиям, вообще не get_posts функцию get_posts .