J'essaie de comprendre comment obtenir les attributs du produit actuel, les stocker dans une variable et les placer dans une classe.
J'ai réussi à obtenir les attributs du produit. Malheureusement, il semble afficher tous les attributs de tous les produits que j'ai définis. Voici le code que j'ai travaillé.
<div id="Container" class="nine columns mixitup-container bevtools-liquor">
<?php
$liquor = new WP_Query( array(
'post_type' => 'product',
'product_cat' => 'liquors',
'meta_query' => array(
array(
'key' => '_stock_status',
'value' => 'instock'
)
)
) );
if ( $liquor->have_posts() ) : while ( $liquor->have_posts() ) : $liquor->the_post();
?>
//In this foreach loop, I'm trying to get all the terms for liquor-brands attributes
<?php
$brand_terms = get_the_terms( $post, 'pa_liquor-brands' );
foreach ( $brand_terms as $term ) :
?>
<?php $brand_string = ''; ?>
<?php $brand_string .= $term->slug . ' '; ?>
<?php endforeach; ?>
<div id="post-<?php the_ID(); ?>" class="three columns mix product-post <?php echo $brand_string ?>" >
</div>
<?php wp_reset_postdata(); ?>
<?php endwhile; else: ?>
<?php //error message ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
Après avoir exécuté le code, voici à quoi ressemble la sortie.
<div id="post-2190" class="34th-pursuit-joes-brew absolut aviation-gin bacardi botanist citadelle-gin don-papa gvine grey-goose jack-daniel johnnie-walker makers-mark monkey-shoulder pale-ale-katipunan" style="display: inline-block;" data-bound="">
</div>
<div id="post-2192" class="34th-pursuit-joes-brew absolut aviation-gin bacardi botanist citadelle-gin don-papa gvine grey-goose jack-daniel johnnie-walker makers-mark monkey-shoulder pale-ale-katipunan" style="display: inline-block;" data-bound="">
</div>
Comme vous pouvez le constater, les deux produits affichent tous les attributs du produit plutôt que ce qui leur est attribué.
get_terms()
Récupère les termes dans une taxonomie ou une liste de taxonomies donnée.
Ce dont tu as besoin c'est
get_the_terms()
Récupère les termes de la taxonomie qui sont attachés à la poste .
Donc, vous pouvez simplement remplacer
$brand_terms = get_terms( 'pa_liquor-brands' );
avec
$brand_terms = get_the_terms( $post, 'pa_liquor-brands' );
Et cela devrait faire l'affaire.
Vous pouvez en savoir plus sur ces deux fonctions ici:
https://developer.wordpress.org/reference/functions/get_terms/https://developer.wordpress.org/reference/functions/get_the_terms/
Edit: Et vous aurez également besoin de réinitialiser votre $brand_string
sinon il va ajouter les termes d'un autre article et les afficher
$brand_terms = get_the_terms($post, 'pa_liquor-brands');
$brand_string = ''; // Reset string
foreach ($brand_terms as $term) :
$brand_string .= $term->slug . ' ';
endforeach;
// echo $brand_string down here somewhere