Intereting Posts
Добавление текста над редактором Переключение между вкладками Visual и HTML свободно Почтовые запросы по широте и долготе Как я могу переопределить существующее правило CSS для определенной страницы Добавить таблицу стилей на макет Как подключить одну персонализированную почту post-types к другому? Как отобразить 2 равных столбца li на основе количества элементов в wp_nav_menu, разделенных на 2? Полная ширина главной записи Моя ссылка «Редактировать страницу» в панели администратора отключена Пользовательский контент для загрузки мультимедиа для вставки специального короткого кода сообщения Как добавить интерактивную консоль python на свой сайт? Как добавить событие jQuery OnClick в кнопку Опубликовать сообщения? WP_Query для получения сообщений в определенном теге или имеет post_format Возможны ли изменения по умолчанию для действий / фильтров? Мета-запрос с несколькими настраиваемыми полями для задачи упорядочения страниц в архивах

Запрос WP для переменных таксономий

Я застрял в этом. Возможно, это просто, может быть, нет. Но все идет.

Я понимаю, что стандартный способ запроса нескольких таксономий в wordpress – это метод, описанный здесь.

https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

Однако этот способ позволяет только «жестко закодированные» таксономии.

То, что я хотел бы достичь, – запустить запрос для нескольких переменных таксономии.

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

$taxes = get_taxonomies( array('public' => true ) , 'names', 'and' );

Пытаться передать переменную $taxes 'taxonomy' напрямую не работает, поскольку 'taxonomy' не принимает массивы. например

 $args = array( 'post_type' => 'post', 'tax_query' => array( array( 'taxonomy' => $taxes, 'field' => 'term_id', 'terms' => $terms, ), ), ); $query = new WP_Query( $args ); 

Поэтому я попытался обойти это, сначала попытавшись:

 foreach ($taxes as $tax) { $the_taxes[] = array ( 'taxonomy' => $tax, 'field' => 'term_id', 'terms' => $terms, ); } $args = array( 'post_type' => 'post', 'tax_query' => array( 'relation' => 'OR', $the_taxes ), ); 

Это не сработало, я думаю, потому что переменная $the_taxes сама представляет собой массив массивов. Я даже пытался дать ему лишенную версию выходного массива без массива () wrap, чтобы имитировать точно такой же результат, как если бы я следовал стандартным способом WordPress для жесткого кодирования запрашиваемых таксономий.

 $the_other_taxes = substr(print_r($the_taxes,true),19,-2); $args = array( 'post_type' => 'post', 'tax_query' => array( 'relation' => 'OR', $the_other_taxes ), ); 

Еще не повезло ..

Есть ли обходной путь для этой проблемы? Мне что-то не хватает?

Большое спасибо, Гарри

tax_query требуется массив массивов, а $the_taxes – массив массивов, у вас уже есть 99% вашего ответа.

 foreach ($taxes as $tax) { $the_taxes[] = array ( 'taxonomy' => $tax, 'field' => 'term_id', 'terms' => $terms, ); } $the_taxes['relation'] = 'OR'; $args = array( 'post_type' => 'post', 'tax_query' => $the_taxes, );