Obține atributele produsului curent și stochează-le într-o variabilă
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.

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

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

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

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

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