Ottenere gli attributi del prodotto corrente e memorizzarli in una variabile
Sto cercando di capire come posso ottenere gli attributi del prodotto corrente, memorizzarli in una variabile e inserirli in una classe.
Sono riuscito a ottenere gli attributi del prodotto, purtroppo sembra che vengano visualizzati tutti gli attributi dei prodotti per tutti i prodotti che ho impostato. Ecco il codice su cui sto lavorando.
<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 questo ciclo foreach, sto cercando di ottenere tutti i termini per gli attributi 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 //messaggio di errore ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
Dopo aver eseguito il codice, ecco come appare l'output.
<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>
Come potete vedere, entrambi i prodotti mostrano tutti gli attributi dei prodotti invece di mostrare solo quelli assegnati a ciascuno di essi.

get_terms()
Recupera i termini in una determinata tassonomia o lista di tassonomie.
Quello che ti serve è
get_the_terms()
Recupera i termini della tassonomia che sono collegati all'articolo.
Quindi puoi semplicemente sostituire
$brand_terms = get_terms( 'pa_liquor-brands' );
con
$brand_terms = get_the_terms( $post, 'pa_liquor-brands' );
E questo dovrebbe risolvere il problema.
Puoi leggere di più su queste due funzioni qui:
https://developer.wordpress.org/reference/functions/get_terms/ https://developer.wordpress.org/reference/functions/get_the_terms/
Modifica:
Inoltre dovrai resettare la tua variabile $brand_string
altrimenti aggiungerà termini da altri articoli e li mostrerà
$brand_terms = get_the_terms($post, 'pa_liquor-brands');
$brand_string = ''; // Resetta la stringa
foreach ($brand_terms as $term) :
$brand_string .= $term->slug . ' ';
endforeach;
// echo $brand_string da qualche parte qua sotto

Ho provato la tua soluzione ma continua a mostrare lo stesso problema. Mostra ancora tutte le tassonomie di tutti i prodotti

Prova a resettare $brand_string all'interno del tuo loop. Se non lo resetti, continuerà ad accumulare dati da altri post.

Ciao Nath, ho aggiornato il mio codice con la tua risposta. Non sono sicuro di aver fatto bene, puoi controllare sopra
