web-dev-qa-db-fra.com

Obtenir un message en fonction de la taxonomie actuelle

Merci pour toute aide.

Je suis dans un post personnalisé (pas une archive) avec une taxonomie. Et j'aimerais afficher:

  • quelques autres messages personnalisés
  • avec ça taxonomie actuelle

Cela ne semble pas si difficile, mais pour moi ça ne me semble pas ... Je n'ai pas trouvé la bonne façon d'utiliser le terme de mon impôt dans la requête ...

Voici mon essai:

 $ terms = wp_get_post_terms ($ post-> ID, 'identite'); // pour obtenir ma taxonomie 
 
 foreach ($ terms as $ term) {
 echo "$ term-> slug"; // juste pour le test - ok 
 
 $ args = array (
 'post_type' => 'example', 
 'tax_query' => array (
 'relation' => 'AND', 
 tableau (
 'taxonomie' => 'identite', 
 'field' => 'ID', 
 'termes' => $ termes 
) 
), 
); // argument final 
 
 $ query = new WP_Query ($ args); 
 
 if ($ requête-> avoir_posts ()) {
 tant que ($ requête-> avoir_posts ()) {
 $ requête-> le_post (); 
 
 // Petite prière, mais cela ne fonctionne pas 
 
} // fin de la période 
 
} 

J'obtiens ce message d'erreur: L'objet de la classe WP_Term n'a pas pu être converti en int dans

Une idée de convertir mon objet et de le rendre lisible? Merci beaucoup

(edit: j'essaie avec la fonction wp_list_pluck mais sans succès)

1
Cha

Essayez ceci pour WP_Query

$args = array(
'post_type' => 'example',
'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'identite',
        'field'    => 'ID',
        'terms'    => $term->term_id
         )
    ),
 );// end args

OR

$args = array(
'post_type' => 'example',
'tax_query' => array(
    'relation' => 'AND',
    array(
        'taxonomy' => 'identite',
        'field'    => 'ID',
        'terms'    => array($term->term_id)
         )
    ),
 );// end args

$term est un objet et tax_query attend un tableau d'identifiants.

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

1
Aniruddha Gawade

Vous obtenez ce message d'erreur en raison de la manière dont vous configurez le tableau $args. Dans le tax_query, vous souhaiterez passer un tableau de tous les identifiants de termes pour le message en cours. En outre, la valeur field était incorrecte (comme indiqué dans le Codex ici: WP_Query # Taxonomy_Parameters ).

Le code final devrait ressembler à quelque chose comme:

<?php 

$terms = wp_get_post_terms( $post->ID, 'identite'); 
$terms_ids = [];

foreach ( $terms as $term ) {
    $terms_ids[] = $term->term_id;
}

$args = array(
    'post_type' => 'example',
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'identite',
            'field'    => 'term_id',
            'terms'    => $terms_ids
        )
    ),
);

$query = new WP_Query($args);

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();

        // All the magic here
    }
}
0
Marc-Antoine Parent