Romu
¿Cómo ocultar ciertos atributos de productos personalizados en la pestaña de información adicional de las páginas de un solo producto?
Nota: No quiero ocultar todo, solo atributos específicos.
Por ejemplo, me gustaría ocultar "pa_size"
por nombrarlo uno.
Solo encontré este, pero es por el peso de un producto.
add_filter( 'woocommerce_product_get_weight' , '__return_false' );
LoicTheAztec
Para todos los atributos de productos personalizados, puede ocultarlos en la pestaña de información adicional simplemente anulando la selección de la opción “Visible en la página del producto” en la configuración del producto > pestaña Atributos:
1) Para eliminar las dimensiones del productopuede deshabilitarlo con el siguiente código:
add_filter( 'woocommerce_product_get_dimensions', '__return_false' );
2) Para eliminar todo de la pestaña (peso, dimensiones y atributos personalizados) use esto:
remove_action( 'woocommerce_product_additional_information', 'wc_display_product_attributes', 10 );
3) Para afinar lo que desea mostrar:
Puedes anular single-product/product-attributes.php
plantilla a través de su tema hijo activo (o tema activo) que muestra todo en esta ficha de producto.
Así que puedes eliminar cualquier bloque html que muestre esos detalles o personalizarlo…
Documentación oficial: Estructura de plantilla y anulación de plantillas a través de un tema
-
Hola, gracias por la rápida respuesta. ¿Pero aquí tengo que elegir productos a mano y anular la selección de los atributos uno por uno? Tengo como 80.000+ productos 🙂 Sería genial filtrarlos en functions.php para que los nuevos productos agregados también se vean afectados por defecto. Además, no quiero que los atributos del producto se desactiven en absoluto, solo ocultarlos de la tabla frontal en la pestaña de información adicional. Algo así como add_filter(‘woocommerce_product_”what_ever_attribute”, ‘__return_false’);
– Romu
24 de diciembre de 2017 a las 12:47
-
Por favor mira: s14.postimg.org/mnhg2xic1/… Los atributos del producto aquí no son identificables en html; de lo contrario, podría agregar algo de css para simplemente ocultarlos aquí como .pa_size {display:none;}
– Romu
24 de diciembre de 2017 a las 13:01
-
@romu ¿Por qué no eliminas esta pestaña de producto? Esto es fácil y resolverá este problema.
– LoicTheAztec
24 de diciembre de 2017 a las 13:04
-
Porque quiero mostrar parte de la información. De lo contrario no preguntaría o? 🙂
– Romu
24 de diciembre de 2017 a las 14:48
-
¿Quiere decir sobrescribir /product-attributes.php ? No, aún no probado. Pero suena bien. Voy a mirar esto hoy. Gracias por su amable ayuda.
– Romu
27 de diciembre de 2017 a las 12:22
Utilizando el functions.php
puede causar problemas con el envío, ver aquí: https://github.com/woocommerce/woocommerce/issues/5985#issuecomment-322541850
Simplemente copie el wp-content/plugins/woocommerce/templates/single-product/product-attributes.php
a wp-content/themes/YOUR_CHILD_THEME/woocommerce/single-product/product-attributes.php
y agrega un if
para comprobar el atributo. (Como LoicTheAztec mencionó en el #3)
Esto es de WooCommerce 4.4.1:
<?php
/**
* Product attributes
*
* Used by list_attributes() in the products class.
*
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/product-attributes.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://docs.woocommerce.com/document/template-structure/
* @package WooCommerce/Templates
* @version 3.6.0
*/
defined( 'ABSPATH' ) || exit;
if ( ! $product_attributes ) {
return;
}
?>
<table class="woocommerce-product-attributes shop_attributes">
<?php foreach ( $product_attributes as $product_attribute_key => $product_attribute ) : ?>
<?php // Hide weight attribute in frontend ?>
<?php if ( esc_attr( $product_attribute_key ) !== 'weight' ): ?>
<tr class="woocommerce-product-attributes-item woocommerce-product-attributes-item--<?php echo esc_attr( $product_attribute_key ); ?>">
<th class="woocommerce-product-attributes-item__label"><?php echo wp_kses_post( $product_attribute['label'] ); ?></th>
<td class="woocommerce-product-attributes-item__value"><?php echo wp_kses_post( $product_attribute['value'] ); ?></td>
</tr>
<?php endif; ?>
<?php endforeach; ?>
</table>
Estaba buscando una respuesta para el mismo problema o similar y quería eliminar la pestaña de información adicional. Encontré esta publicación usando el filtro woocommerce_product_tabs
Lo agregué a functions.php y la pestaña de información adicional ya no se agrega a la página.