Уточнить результаты поиска с помощью WP_Query

Я пытаюсь изменить (уточнить?) Worpress результаты поиска с помощью WP_Query, как это объясняется в Codex . Фрагмент, указанный в этой статье, находится в верхней части файла PHP шаблона поиска, и все результаты отображаются соответствующим образом.

Когда я пытаюсь добавить массив WP_Query с аргументами по своему выбору, для создания измененного запроса (например: сообщения, содержащие термины пользовательский поиск, не включенные в определенную таксономию), WP_Query полностью игнорирует прилагаемые аргументы и дает мне исходный поиск результаты снова и снова.

Код ниже:

$search = new WP_Query(array( 'taxonomy' => 'media', 'field' => 'image', 'operator' => 'NOT IN')); 

Я также пробовал это так, но у меня такое чувство, что это совершенно неправильно:

 <?php global $query_string; $query_args = explode("&", $query_string); $search_query = array(); foreach($query_args as $key => $string) { $query_split = explode("=", $string); $search_query[$query_split[0]] = urldecode($query_split[1]); } // foreach $args = array( 'tax_query' => array( array( 'taxonomy' => 'media', 'field' => 'slug', 'terms' => 'media', 'operator' => 'NOT IN' ) ), $search_query ); 

Ниже следует обычное:

 if ( $search->have_posts() ) : while ($search->have_posts() ) : $search->the_post(); ?> 

Я не очень уверен, когда дело доходит до кодирования, но пытается научить себя причудам WordPress как CMS. Я прочитал ответы на этом сайте, однако ни один из используемых методов не сделал это для меня.

Вы видите, что я делаю неправильно? Благодаря!

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

Я предполагаю, что у вас есть обычная таксономия, называемая носителем, и вы специально хотите оставить сообщения с термином media (например, термин, найденный в теге или категории) в результатах поиска

В твоем случае:

 $custom_query = array(); $custom_query['tax_query'][] = array( 'taxonomy' => 'media', 'terms' => array('media'), 'field' => 'slug', 'operator' => 'NOT IN' ); $args = array_merge( $wp_query->query, $custom_query ); query_posts( $args );