Ottenere gli attributi del prodotto corrente e memorizzarli in una variabile

23 set 2016, 05:22:23
Visualizzazioni: 33.3K
Voti: 4

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.

0
Tutte le risposte alla domanda 1
6

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
23 set 2016 06:13:48
Commenti

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

clestcruz clestcruz
27 set 2016 18:07:09

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

ngearing ngearing
28 set 2016 02:14:06

Scusa ma come si resetta $brand_string all'interno del loop

clestcruz clestcruz
28 set 2016 03:09:19

$brand_string = '';

ngearing ngearing
28 set 2016 03:10:09

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

clestcruz clestcruz
28 set 2016 03:48:39

Scusa, ciclo sbagliato. Mi riferivo al tuo ciclo di query. Ho anche aggiornato la mia risposta.

ngearing ngearing
28 set 2016 04:14:40
Mostra i restanti 1 commenti