J'ai deux taxonomies: "type de guide" et "outils".
Ils ressemblent à ceci:
Type de guide
- Article
- Video
- Cheat sheet
Outil
- Apprentissage système de gestion
Quiz Tool
- 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)
Outil de notifications
La capture d'écran décrit parfaitement le problème: je dois limiter cette requête fiscale pour n'inclure que les éléments marqués avec "Outil de questionnaire".
Écran: http://cl.ly/0t3J143q0A1X2w2y2X2n
J'essaie de le faire avec un tax_query, avec une relation 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 );
Mais je n'arrive pas à comprendre comment limiter à la liste les éléments étiquetés avec "Outil de questionnaire". Notez la partie "qu'est-ce que je mets ici".
Aide appréciée.
METTRE À JOUR:
Je viens de me rendre compte que je n'ai pas à interroger les deux taxonomies, mais à quitter le tax_query et à utiliser un 'get_the_category ()' dans le cadre du $ args:
// The Query
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'guide-type',
'field' => 'slug',
'terms' => 'self-paced '
)
),
'category_name' => get_the_category()
Quelque chose comme ca? Toutes les idées sur la façon dont je pourrais limiter ce 'nom de catégorie' à l'actuel (outil de questionnaire).
Terry
Cette fonction d'assistance renverra l'ID du terme que vous consultez actuellement (de toute taxonomie - vous pouvez vous limiter à une taxonomie spécifique, ou à la dans les taxonomies de balises et de catégories).
Il retournera false si vous ne vous trouvez pas sur une page d'archive de terme de taxonomie.
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;
}
Ensuite, vous pouvez faire quelque chose comme ce qui suit:
$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 );
Remarque: je n'ai pas testé cela
Cela devrait obtenir toutes les données de publication pour la taxonomie "Outil" avec le terme "Outil de questionnaire".
$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;
}
Une autre façon de faire consiste à utiliser get_the_terms()
pour déterminer la page du terme fiscal sur laquelle vous vous trouvez, puis à le transférer au 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);
}
Maintenant je peux passer $current_term
dans mon 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 );
Je retourne le dernier élément du tableau, car c'est la page des taxes sur laquelle je suis. Vous pouvez renvoyer la valeur à partir de n’importe quelle position dans le tableau souhaité. Il m'est arrivé de vouloir le dernier et j'ai donc utilisé end(array)
.