Obține atributele produsului curent și stochează-le într-o variabilă

23 sept. 2016, 05:22:23
Vizualizări: 33.3K
Voturi: 4

Am încercat să găsesc o modalitate prin care pot obține atributele produsului curent și să le stochez într-o variabilă pentru a le folosi într-o clasă.

Am reușit să obțin atributele produsului, din păcate se pare că se afișează toate atributele produselor pentru toate produsele pe care le-am setat. Iată codul la care am lucrat.

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


        //În această buclă foreach, încerc să obțin toți termenii pentru atributele liquor-brands

        <?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 //mesaj de eroare ?>

        <?php endif; ?>


        <?php wp_reset_query(); ?>

După rularea codului, iată cum arată rezultatul.

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

După cum puteți vedea, ambele produse afișează toate atributele produselor în loc să arate doar ce le este atribuit specific.

0
Toate răspunsurile la întrebare 1
6

get_terms() Preia termenii dintr-o anumită taxonomie sau listă de taxonomii.

Ceea ce ai nevoie este

get_the_terms() Preia termenii din taxonomie care sunt atașați articolului.

Deci poți înlocui simplu

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

cu

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

Și asta ar trebui să rezolve problema.

Poți citi mai multe despre aceste două funcții aici:

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

Edit: Și va trebui să resetezi și $brand_string altfel va adăuga termeni de la alte articole și îi va afișa

$brand_terms = get_the_terms($post, 'pa_liquor-brands');
$brand_string = ''; // Resetează stringul
foreach ($brand_terms as $term) :
    $brand_string .= $term->slug . ' ';
endforeach;

// afișează $brand_string undeva mai jos
23 sept. 2016 06:13:48
Comentarii

Am încercat soluția ta dar încă apare aceeași problemă. Încă afișează toate taxonomiile pentru toate produsele

clestcruz clestcruz
27 sept. 2016 18:07:09

Încearcă să resetezi variabila $brand_string direct în interiorul buclei tale. Dacă nu o resetezi, va acumula date de la alte articole.

ngearing ngearing
28 sept. 2016 02:14:06

Scuze dar cum anume resetez variabila $brand_string în interiorul buclei?

clestcruz clestcruz
28 sept. 2016 03:09:19

$brand_string = '';

ngearing ngearing
28 sept. 2016 03:10:09

Bună Nath, am actualizat codul meu cu răspunsul tău. Nu sunt sigur că am făcut corect, poți verifica mai sus

clestcruz clestcruz
28 sept. 2016 03:48:39

Scuze, buclă greșită. Mă refeream la bucla ta de interogare. Am actualizat și răspunsul meu.

ngearing ngearing
28 sept. 2016 04:14:40
Arată celelalte 1 comentarii