php wordpress woocommerce attributes products

php - Agregar atributos a la descripción breve en WooCommerce 3.0+



wordpress attributes (3)

para construir de la respuesta de LoicTheAztec:

Su código solo funciona si ha predefinido los atributos en el back-end de WP en Productos -> Atributos. Si trabaja con atributos de productos individuales (personalizados) que configura en la página del producto, wc_get_product_terms () no devolverá nada. Puede reconocer atributos predefinidos por el prefijo "pa_", se almacenan en la tabla "woocommerce_attribute_taxonomies".

Para mostrar estos atributos individuales de la misma manera que lo sugirió LoicTheAztec, use este código:

add_action( ''woocommerce_shop_loop_item_title'', ''custom_attributes_display'', 20); function custom_attributes_display() { // Just for product category archive pages if(is_product_category()) { global $product; // get all product attributes $attributes = $product->get_attributes(); // the array of attributes you want to display (shown in same order) $show_attributes = array(''My Attribute A'', ''Another Attribute B''); foreach($show_attributes as $key => $show_attribute) { foreach($attributes as $attribute) { // check if current attribute is among the ones to be shown if ($attribute->get_name() == $show_attribute) { echo $attribute->get_options()[0]; // seperate attributes by "/" if (count($show_attributes) > 1) echo ''/''; unset($show_attributes[$key]); break; } } } } }

Me gustaría insertar los atributos de todos los productos en su breve descripción, para que el cliente pueda abrir una vista rápida y verificar estos atributos.

Ya probé esta respuesta: Mostrar valores de atributos de productos específicos en páginas de categoría de archivos

También este: Woocommerce : muestra atributos de producto único con códigos abreviados en Frontend

Y no pude hacer que funcione. Creo que debería ser porque WooCommerce se actualizó a la versión 3.0+

¿Alguien sabe una manera de hacerlo?

Gracias


Actualización 3 (Automatización para productos simples, compatibilidad de WC)

// Compatibility for WC 3+ and automation enhancements add_action( ''woocommerce_shop_loop_item_title'', ''custom_attributes_display'', 20 ); function custom_attributes_display(){ global $product; // Just for simple products if( ! $product->is_type( ''simple'' ) ) return; $loop_count = 0; echo ''<div>''; // Get the attributes taxonomy slugs (Updated and dynamic now) $attributes_taxonomy = $product->get_attributes(); // OR set an indexed array of taxonomy slug (key) and name (value) to chose which ones, like: // $attributes_taxonomy = array(''pa_nopeus'' => ''Nopeus'', ''pa_liito'' => ''Liito, ''pa_vakaus'' => ''Vaukaus'' ); foreach( $attributes_taxonomy as $taxonomy => $attribute ) { // Getting the term names of an attribute (set in a coma separated string if many values) $attribute_terms = wp_get_post_terms( get_the_id(), $taxonomy, array( ''fields'' => ''names'' ) ); $terms_string = implode( '','', $attribute_terms ); // Displays only if attribute exist for the product if( count( $attribute_terms ) > 0 ){ // Updated echo $terms_string; // Separating each number by a " | " (Updated and dynamic now) $attr_count = count( $attributes_taxonomy ); $loop_count++; if( $loop_count < $attr_count && $attr_count > 1 ) echo '' | ''; } } echo ''</div>''; }

Actualización solo para WooCommerce versión 3.0+.

// For WooCommerce Version 3.0+ (only) add_action( ''woocommerce_shop_loop_item_title'', ''custom_attributes_display'', 20 ); function custom_attributes_display(){ // Just for product category archives pages if(is_product_category()){ global $product; // the array of attributes names $attribute_names = array(''pa_nopeus'', ''pa_liito'', ''pa_vakaus'', ''pa_feidi''); foreach( $attribute_names as $key => $attribute_name ) { // For WooCommerce version 3.0+ $product_id = $product->get_id(); // WC 3.0+ // Getting the value of an attribute (OK for WC 3.0+) $wc_term = wc_get_product_terms( $product_id, $attribute_name); $attribute_value = array_shift($wc_term); // Displays only if attribute exist for the product if(!empty($attribute_value) || ''0'' == $attribute_value ){ // Updated echo $attribute_value; // Separating each number by a " / " if($key < 3) echo '' / ''; } } } }

El código va en el archivo function.php de su tema hijo activo (o tema) o también en cualquier archivo de complemento.

Debería funcionar ahora en WC 3.0+

Relacionado con este código de respuesta: muestra los valores de atributos de productos específicos en las páginas de categoría de archivos


¿Cómo puedo mostrar la etiqueta de atributo con este código?

// Compatibilidad para WC 3+ y mejoras de automatización add_action (''woocommerce_shop_loop_item_title'', ''custom_attributes_display'', 20); función custom_attributes_display () {global $ product;

// Just for simple products if( ! $product->is_type( ''simple'' ) ) return; $loop_count = 0; echo ''<div>''; // Get the attributes taxonomy slugs (Updated and dynamic now) $attributes_taxonomy = $product->get_attributes(); // OR set an indexed array of taxonomy slug (key) and name (value) to chose which ones, like: // $attributes_taxonomy = array(''pa_nopeus'' => ''Nopeus'', ''pa_liito'' => ''Liito, ''pa_vakaus'' => ''Vaukaus'' ); foreach( $attributes_taxonomy as $taxonomy => $attribute ) { // Getting the term names of an attribute (set in a coma separated string if many values) $attribute_terms = wp_get_post_terms( get_the_id(), $taxonomy, array( ''fields'' => ''names'' ) ); $terms_string = implode( '','', $attribute_terms ); // Displays only if attribute exist for the product if( count( $attribute_terms ) > 0 ){ // Updated echo $terms_string; // Separating each number by a " | " (Updated and dynamic now) $attr_count = count( $attributes_taxonomy ); $loop_count++; if( $loop_count < $attr_count && $attr_count > 1 ) echo '' | ''; } } echo ''</div>'';

}