Полуспециализированный вопрос о таксономии

Учитывая следующие продукты:

продукт 1

  • НААМ
  • часть таксономии «брендовая» стоимость «Joolz»
  • часть таксономии «Категория» значение «Председатель»

продукт 2

  • НААМ
  • часть таксономии «брендовая» стоимость «Joolz»
  • часть таксономии «Категория» значение «Автомобиль»

продукт 3

  • НААМ
  • часть таксономии «брендовая» стоимость «Коста»
  • часть таксономии «Категория» значение «Байк»

Как я могу получить всю ценность категории, которая имеет продукты, связанные с ними с данным брендом, поэтому я даю ценность «Коста», я получаю велосипед, если я даю ценность «Joolz», я получаю «стул» и «автомобиль»,

Solutions Collecting From Web of "Полуспециализированный вопрос о таксономии"

Начните с tax_query чтобы получить сообщения с tax_query 'categorie' . Предполагая, что пользовательский запрос:

 $tax_query_args = array( 'tax_query' => array( array( 'taxonomy' => 'categorie', 'field' => 'slug', 'terms' => array( 'costa' ) ), ); $tax_query = new WP_Query( $tax_query_args ); 

Затем выполните этот запрос и используйте get_the_terms() чтобы вернуть термины таксономии brand для каждого сообщения и добавить их в массив:

 $tax_query_brand_terms = array(); if ( $tax_query->have_posts() ) : while ( $tax_query->have_posts() ) : $tax_query->the_post(); $post_brand_terms = get_the_terms( get_the_ID(), 'brand' ); if ( is_array( $post_brand_terms ) ) { $tax_query_brand_terms = array_merge( $tax_query_brand_terms, $post_brand_terms ); } endwhile; endif; wp_reset_postdata(); 

Теперь массив $tax_query_brand_terms должен быть заполнен всеми терминами таксономии brand для должностей в указанном термине таксономии categorie .

Если вы хотите обернуть его в функцию, позволяющую передать члену таксономии categorie как параметр:

 function wpse63233_tax_query_brand_terms( $categorie = false ) { if ( false == $catgorie ) { return false; } // Also, put in some error checking here, // eg comparing $categorie against // get_terms( 'categorie' ) // Query 'categorie' posts $tax_query_args = array( 'tax_query' => array( array( 'taxonomy' => 'categorie', 'field' => 'slug', 'terms' => array( $categorie ) ), ); $tax_query = new WP_Query( $tax_query_args ); // Get 'brand' terms from all returned posts $tax_query_brand_terms = array(); if ( $tax_query->have_posts() ) : while ( $tax_query->have_posts() ) : $tax_query->the_post(); $post_brand_terms = get_the_terms( get_the_ID(), 'brand' ); if ( is_array( $post_brand_terms ) ) { $tax_query_brand_terms = array_merge( $tax_query_brand_terms, $post_brand_terms ); } endwhile; endif; wp_reset_postdata(); // Return the array return $tax_query_brand_terms; }