Удаление сообщений из возвращенного wp_query. Нельзя использовать объект типа WP_Query в качестве массива

Моя конечная цель – выполнить 3 настраиваемых фильтра полей в наборах фильтров в WP_Query. Трудность возникает, поскольку мне нужно использовать оба отношения AND / OR между тремя фильтрами:

  • field1 = A AND
  • field2 = null ИЛИ field2 = B

Способ, которым я пытаюсь решить это, – это выполнить первый фильтр поля в исходном WP_Query, поскольку это будет делать основную часть фильтра. Затем я хочу собрать список идентификаторов сообщений, соответствующих запросу (field2 = null OR field2 = B) (используя второй WP_Query), а затем выполнить проверку исходного WP_Query в списке post_id и удалить любые совпадения.

код, который мне нужно сделать до сих пор:

foreach($query['posts'] as $thepost) { if(in_array($thepost['ID'], $new_query_results['posts'])){ unset($thepost); } } 

Поскольку $ query является основным WP_Query и $ new_query_results, являющимся WP_Query, который просто возвращает массив идентификаторов сообщений

Выполнение этого кода дает мне ошибку:

 Fatal error: Cannot use object of type WP_Query as array in functions.php on line 190 Line 190: foreach($query['posts'] as $thepost) { 

Во-первых, есть ли лучший способ достичь моей цели? Если нет, кто-нибудь может решить, как заставить этот фрагмент кода работать?

Solutions Collecting From Web of "Удаление сообщений из возвращенного wp_query. Нельзя использовать объект типа WP_Query в качестве массива"

WP_Query – это объект, а не массив. Необходимо использовать $ query-> posts

Для всех, кого это интересует, я нашел лучший способ атаковать эту проблему. Выполнение второго запроса с помощью операторов OR и вывод в массив идентификаторов сообщений позволило мне отфильтровать исходный запрос, основанный на этом списке.