Je dois renseigner le paramètre terms de mon tax_query avec le terme actuel de la publication.
J'ai essayé d'utiliser la fonction WP wp_get_post_terms dans une variable, puis de la référencer dans le paramètre terms pour saisir le nom du terme de publication en cours.
J'utilise la page de codex comme référence, mais je n'arrive pas à la faire peupler.
Est-ce que quelqu'un peut-il me montrer la bonne direction??
//Returns Array of Term Names for "topic"
$term_list = wp_get_post_terms($post->ID, 'topic', array("fields" => "names"));
echo $term_list;
$args = array (
'post_type' => 'knowledge-base',
'orderby' => 'meta_value_num',
'meta_key' => 'top_four_num',
'tax_query' => array(
array(
'taxonomy' => 'topic',
'field' => 'slug',
'terms' => $term_list,
),
),
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
echo '<h2>' . the_title() . '</h2>';
}
}
// Restore original Post Data
wp_reset_postdata();
Toute aide est très appréciée!
Vous avez quelques problèmes ici.
En tant que votre code, $post
n'est pas défini. En fait, il est préférable d'utiliser get_the_ID()
pour obtenir l'ID de publication au lieu de $post
.
wp_get_post_terms()
effectue un appel supplémentaire à la base de données. Par conséquent, si vous êtes vraiment déterminé par les performances, je préférerais utiliser get_the_terms()
.
Vous renvoyez des noms de terme, mais définissez ensuite le paramètre field
dans votre tax_query
sur slug
. La valeur du champ doit correspondre à la valeur du terme passé. Juste une remarque, n'utilisez jamais le champ name
dans un tax_query
, il y a un problème d'assainissement de nom dans la classe WP_Tax_Query
. Si vous utilisez wp_get_post_terms()
, définissez le paramètre fields
sur ids
pour renvoyer un tableau d'identificateurs de termes.
wp_get_post_terms()
$term_list = wp_get_post_terms(
get_the_ID(),
'topic',
array(
'fields' => 'ids'
)
);
if ( $term_list
&& !is_wp_error( $term_list )
) {
$args = array (
'post_type' => 'knowledge-base',
'orderby' => 'meta_value_num',
'meta_key' => 'top_four_num',
'tax_query' => array(
array(
'taxonomy' => 'topic',
'terms' => $term_list,
),
),
);
// Run your custom query here
}
get_the_terms()
$terms = get_the_terms(
get_the_ID(),
'topic'
);
if ( $terms
&& !is_wp_error( $terms )
) {
$term_list = wp_list_pluck( $terms, 'term_id' );
$args = array (
'post_type' => 'knowledge-base',
'orderby' => 'meta_value_num',
'meta_key' => 'top_four_num',
'tax_query' => array(
array(
'taxonomy' => 'topic',
'terms' => $term_list,
),
),
);
// Run your custom query here
}