Consultando duas taxonomias

Eu tenho duas taxonomias: “tipo de guia” e “ferramentas”.

Eles se parecem com isto:

Tipo de guia

- Article - Video - Cheat sheet 

Ferramenta

– Sistema de Gestão de Aprendizagem

  • Ferramenta Quiz

     - Hide a grades column (article) - Creating a Gradebook (article) - Long Answer Question Steps (article) - Matching Questions (article) - True or False (article) - Using the Quiz Tool (video) - Using the Quiz Tool (cheat sheet) 
  • Ferramenta de notifications

  • Ferramenta de notas

A captura de canvas descreve perfeitamente o problema: eu preciso limitar essa consulta fiscal para include apenas itens que são marcados com “Quiz Tool”.

Tela: http://cl.ly/0t3J143q0A1X2w2y2X2n

Estou tentando fazê-lo com uma tax_query, com uma relação AND:

 $args = array( 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'guide-type', 'field' => 'slug', 'terms' => 'video' ), array( 'taxonomy' => 'tool', 'field' => 'slug', 'terms' => what do I put here to get the current tool (Quiz tool)? ) ) ); $query = new WP_Query( $args ); 

Mas eu simplesmente não consigo descobrir como limitar apenas a lista de itens que são marcados com “Quiz Tool”. Observe a parte “o que eu coloco aqui”.

Ajuda apreciada.

ATUALIZAR:

Ocorreu-me apenas que eu não tenho que consultar ambas as taxonomias, em vez disso, saia do tax_query e use uma ‘get_the_category ()’ como parte dos $ args:

 // The Query $args = array( 'tax_query' => array( array( 'taxonomy' => 'guide-type', 'field' => 'slug', 'terms' => 'self-paced ' ) ), 'category_name' => get_the_category() 

Algo parecido? Qualquer idéia de como eu poderia limitar esse ‘nome da categoria’ para ser o atual que eu estou olhando (Ferramenta Quiz).

Terry

Solutions Collecting From Web of "Consultando duas taxonomias"

Esta function auxiliar irá retornar o ID do termo que você está visualizando atualmente (de qualquer taxonomia – você pode limitar apenas a uma taxonomia específica, ou a tag incorporada e taxonomias de categoria).

Ele retornará falso se você não estiver em uma página de arquivo de termos de taxonomia.

 function wpse52578_get_current_term_id(){ if( !is_tax() && !is_tag() && !is_category() ) return false; //If we got this far we are on a taxonomy-term page // (or a tag-term or category-term page) $taxonomy = get_query_var( 'taxonomy' ); $queried_object = get_queried_object(); $term_id = (int) $queried_object->term_id; return $term_id; } 

Então você pode fazer algo como o seguinte:

 $tool_term_id = wpse52578_get_current_term_id(); $tax_query = array( 'relation' => 'AND', array( 'taxonomy' => 'guide-type', 'field' => 'slug', 'terms' => 'video' )); if( $tool_term_id ){ $tax_query[] = array( 'taxonomy' => 'tool', 'field' => 'id', 'terms' => $tool_term_id ) } $args = array('tax_query' => $tax_query); $query = new WP_Query( $args ); 

Nota: eu não testei isso

Isso deve obter todos os dados de publicação da taxonomia “Ferramenta” com o termo “Ferramenta Quiz”.

 $posts = get_content_taxonomy('tool', 'quiz-tool'); function get_content_taxonomy($tax, $section){ $wp_query = new WP_Query(); $wp_query->query(array('posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', 'tax_query' => array(array('taxonomy' => $tax, 'field' => 'slug', 'terms' => $section)))); $posts = $wp_query->posts; if(!empty($posts)){ $return = $posts; } return $return; } 

Uma maneira alternativa de fazer isso é usar get_the_terms() para descobrir qual a página de prazo de imposto em que você está, e passar para a tax_query .

 // Get an array of current terms, use the last one returned $terms = get_the_terms( $post->ID, 'tool' ); if ( $terms && ! is_wp_error( $terms ) ) { $current_tax_terms = array(); foreach ( $terms as $term ) { $current_tax_terms[] = $term->name; } //Use end to give me just the last term $current_term = end($current_tax_terms); } 

Agora eu posso passar $current_term na minha tax_query:

 $args = array( 'tax_query' => array( array( 'taxonomy' => 'guide-type', 'field' => 'slug', 'terms' => 'self-paced' ), array( 'taxonomy' => 'tool', 'field' => 'slug', 'terms' => $current_term ) ), 'author_name' => 'saltcod' ); $query = new WP_Query( $args ); $the_query = new WP_Query( $args ); 

Estou retornando o último item na matriz, porque essa é a página de impostos em que estou. Você pode retornar o valor de qualquer posição na matriz que você queria. Por acaso eu queria o último e o end(array) usado end(array) .