it-swarm.com.de

produktattribute für das aktuelle Produkt abrufen und in einer Variablen speichern

Ich habe versucht herauszufinden, wie ich die Produktattribute des aktuellen Produkts abrufen und in einer Variablen speichern und in eine Klasse einordnen kann.

Es ist mir gelungen, die Produktattribute abzurufen. Leider werden anscheinend alle Produktattribute für alle von mir festgelegten Produkte angezeigt. Hier ist der Code, an dem ich gearbeitet habe.

    <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(); ?>

Nach dem Ausführen des Codes sehen Sie hier, wie die Ausgabe aussieht.

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

Wie Sie sehen, zeigen beide Produkte alle Produktattribute an, anstatt anzuzeigen, was ihnen zugewiesen ist.

3
clestcruz

get_terms() Ruft die Begriffe in einer bestimmten Taxonomie oder Liste von Taxonomien ab.

Was Sie brauchen, ist

get_the_terms() Ruft die Begriffe der Taxonomie ab, die an den Beitrag angehängt sind .

So können Sie einfach ersetzen

$brand_terms = get_terms( 'pa_liquor-brands' );

mit

$brand_terms = get_the_terms( $post, 'pa_liquor-brands' );

Und das sollte zum Trick.

Sie können hier mehr über diese beiden Funktionen lesen:

https://developer.wordpress.org/reference/functions/get_terms/https://developer.wordpress.org/reference/functions/get_the_terms/

Edit: Und Sie müssen auch Ihren $brand_string zurücksetzen, sonst werden Begriffe aus anderen Posts hinzugefügt und ausgegeben

$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