web-dev-qa-db-fra.com

obtenir les attributs du produit actuel et le stocker dans une variable

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é.

3
clestcruz

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
4
ngearing