Mostrar el valor de un atributo de producto individual en la página de Tienda (Woocommerce)

2 nov 2016, 01:22:56
Vistas: 53.5K
Votos: 6

Estoy tratando de mostrar el valor de un solo atributo ('talla') en la página de tienda. Utilicé el siguiente código para mostrar todos los valores, intenté adaptarlo para mostrar un solo atributo, pero sin éxito...

¿Pueden ayudarme a adaptar el código para mostrar solo los valores del atributo 'talla'?

// Obtener los atributos
$attributes = $product->get_attributes();
// Iniciar el bucle
foreach ( $attributes as $attribute ) : 
    // Verificar y mostrar, adaptado de /templates/single-product/product-attributes.php
    if ( $attribute['is_taxonomy'] ) {
        $values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'names' ) );
        echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    } else {
        // Convertir pipes a comas y mostrar valores
        $values = array_map( 'trim', explode( WC_DELIMITER, $attribute['value'] ) );
        echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    }
endforeach;

¿Pueden indicarme cómo modificarlo?

0
Todas las respuestas a la pregunta 2
8
11

Simplemente usa global $product y luego utiliza el método get_attribute() de ese objeto de producto, como se muestra a continuación:

$size = $product->get_attribute( 'pa_size' );

También puedes obtenerlo con el siguiente código:

global $product;
$size = array_shift( wc_get_product_terms( $product->id, 'pa_size', array( 'fields' => 'names' ) ) );

Recuerda que debes usar obligatoriamente global $product.

2 nov 2016 06:35:32
Comentarios

Gracias, ¿y cómo puedo mostrar los valores (separados por espacio)?

nadyawell nadyawell
2 nov 2016 16:06:25

¡No he entendido a qué te refieres con "separados por espacios"! Y si crees que esta respuesta te ayudó, por favor acéptala.

CodeMascot CodeMascot
2 nov 2016 16:36:14

Sí ayudó, gracias. Simplemente tengo problemas para mostrar los valores correctamente en mi plantilla. ¿Puedes aconsejarme sobre cómo mostrarlos?

nadyawell nadyawell
2 nov 2016 16:39:59

¿Puedes proporcionar algún enlace visible o imagen de cómo quieres mostrarlos? @user3767576

CodeMascot CodeMascot
2 nov 2016 16:41:35

http://nadinka.webd.pl/modafirma/category/clothing/ - al pasar el cursor sobre la imagen del producto verás un cuadro de Tallas disponibles, quiero mostrar allí todos los valores de tallas asignados al producto. Intenté mostrarlos usando $echo, pero solo aparece el primer valor (hay más de uno para cada producto)

nadyawell nadyawell
2 nov 2016 16:48:16

Entendido. Estoy un poco ocupado ahora. Dame un poco de tiempo. Volveré contigo. ¿Ok, amigo?

CodeMascot CodeMascot
2 nov 2016 16:59:14

El código que funcionó para mí es $size = $product->get_attribute( 'pa_size' ); global $product; $size = array_values( wc_get_product_terms( $product->id, 'pa_size', array( 'fields' => 'names' ) ) ); $prodsizes=implode(", ",$size); echo $prodsizes;

nadyawell nadyawell
2 nov 2016 22:01:48

Para mostrar un atributo específico llamado "Dimensiones del artículo":

add_action( 'woocommerce_single_product_summary', 'display_product_formated_dimensions_table', 25 );

function display_product_formated_dimensions_table(){ global $product;

$item_dimensions = $product->get_attribute( 'Item Dimensions' ); if ( $product->has_attributes() ) { echo '<table class="shop_attributes"><tr> <th>' . __( 'Dimensiones del artículo', 'woocommerce' ) . '</th> <td class="product_dimensions">' . esc_html( $item_dimensions ) . '</td> </tr></table>'; } }

Antebios Antebios
3 dic 2020 07:32:21
Mostrar los 3 comentarios restantes
1
-1
// Obtener el objeto del producto actual en WooCommerce
$product = wc_get_product();
// Mostrar el atributo 'Tamaño' del producto
echo $product->get_attribute( 'Tamaño' );
16 jul 2018 10:53:12
Comentarios

¿Podrías explicar por qué esto es una respuesta?

Krzysiek Dróżdż Krzysiek Dróżdż
16 jul 2018 12:00:07