Obtener atributos del producto actual y almacenarlos en una variable

23 sept 2016, 05:22:23
Vistas: 33.3K
Votos: 4

He estado tratando de averiguar cómo puedo obtener los atributos del producto actual, almacenarlos en una variable y colocarlos en una clase.

He logrado obtener los atributos del producto, sin embargo, parece que está mostrando todos los atributos de productos en todos los productos que he configurado. Aquí está el código con el que he estado trabajando.

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


        // En este bucle foreach, estoy tratando de obtener todos los términos para los atributos 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 //mensaje de error ?>

        <?php endif; ?>


        <?php wp_reset_query(); ?>

Después de ejecutar el código, así es como se ve la salida.

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

Como pueden ver, ambos productos están mostrando todos los atributos de producto en lugar de mostrar solo los que tienen asignados.

0
Todas las respuestas a la pregunta 1
6

get_terms() Recupera los términos en una taxonomía dada o lista de taxonomías.

Lo que necesitas es

get_the_terms() Recupera los términos de la taxonomía que están asociados al post.

Así que simplemente puedes reemplazar

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

con

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

Y eso debería solucionarlo.

Puedes leer más sobre estas dos funciones aquí:

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

Edición: También necesitarás reiniciar tu $brand_string de lo contrario agregará términos de otros posts y los mostrará

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

// echo $brand_string aquí abajo en algún lugar
23 sept 2016 06:13:48
Comentarios

Probé tu solución pero sigue mostrando el mismo problema. Todavía muestra todas las taxonomías de todos los productos

clestcruz clestcruz
27 sept 2016 18:07:09

Intenta reiniciar $brand_string justo dentro de tu bucle. Si no lo reinicias, seguirá acumulando datos de otras publicaciones.

ngearing ngearing
28 sept 2016 02:14:06

Disculpa, pero ¿cómo se reinicia $brand_string dentro del bucle?

clestcruz clestcruz
28 sept 2016 03:09:19

$brand_string = '';

ngearing ngearing
28 sept 2016 03:10:09

Hola Nath, he actualizado mi código con tu respuesta. No estoy seguro de haberlo hecho bien, puedes revisarlo arriba

clestcruz clestcruz
28 sept 2016 03:48:39

Perdón, bucle equivocado. Me refería a tu bucle de consulta. También he actualizado mi respuesta.

ngearing ngearing
28 sept 2016 04:14:40
Mostrar los 1 comentarios restantes