Есть способ использовать $query->set('tax_query', ...)
в pre_get_posts
фильтре? например, следующий код не изменяет запрос. Обратите внимание, что я создаю $ таксономии и пользовательский поиск.
function custom_search_filter($query) {
...
// array('taxonomy' => 'category', 'field' => 'id', 'terms' => array( 41,42 ), 'operator' => 'IN')
$taxonomies = implode(',', $taxonomy_arr);
// /wordpress/25076/how-to-filter-wordpress-search-excluding-post-in-some-custom-taxonomies
$taxonomy_query = array('relation' => 'AND', $taxonomies);
$query->set('tax_query', $taxonomy_query);
}
return $query;
}
add_filter( 'pre_get_posts', 'custom_search_filter', 999 );
Заранее спасибо.
pre-get-posts
Хосе Пабло Ороско Марин
источник
источник
WP_Query
объект в метод установки аргумента?Ответы:
$query
Переменный в фильтре представляет собойWP_Query
объект, так что вы не должны быть пропусканием новогоWP_Query
объекта в метод для настройки свойств этого объекта.Вопрос , который вы скопировали код из неправильно с помощью фильтра, который я чувствую это суть вашего вопроса.
Да,
tax_query
может использоваться внутриpre_get_posts
(или аналогичноparse_request
) фильтра / действия.Вот пример:
укажите пользовательскую таксономию для поисковых запросов
источник
$tax_query
это не объект,$query
хотя (это экземплярWP_Query
).Налоговые запросы требуют, чтобы вы также установили объект tax_query в запросе, так как запрос уже был проанализирован. Смотрите мой ответ на страницах Изменение таксономии, чтобы исключить элементы в дочерних таксономиях .
источник