¿Cómo ocultar el botón añadir al carrito en un producto de Woocommerce según un atributo?

Me encontrado con la necesidad de ocultar el botón añadir al carrito dependiendo de un atributo en Woocommerce.

Concretamente quiero mostrar un precio diferente dependiendo del tipo de usuario, había pensado en hacer un espacio de venta al por mayor con tipos de usuarios, etc. Pero esto obligaría que los usuarios se tuvieran que registrar para ver su precio. Después de darle varias vueltas lo más sencillo, ya que, además debo importar más de 4.000 productos desde un Excel, creo que es hacerlo mediante atributos. No quiero que los usuarios empresa puedan comprar a través de la web, sólo los particulares.

Para ello, en Woocommerce he creado un atributo llamado ‘Tipo de usuario’ con el slug ‘tipo-de-usuario’, luego he creado los valores ‘empresa’ y ‘particular’ dentro del atributo ‘Tipo de usuario’.

Después en los productos debo cambiar los tipos de producto a variables, en lugar de simples, y hacer las variaciones con sus precios.

Para poder ocultar el botón de añadir al carrito y el campo de cantidad he añadido el siguiente código en functions.php

/*EXI oculto el carrito en si el tipo de usario es una empresa*/
add_action( 'wp_footer', 'modify_product_page_based_on_attribute' );
function modify_product_page_based_on_attribute() {
if ( ! is_product() ) return; // Solo ejecutar en la página del producto

global $product;

// Define el nombre del atributo y el término que deseas verificar
$taxonomy = 'pa_tipo-de-usuario';
$term_name = 'empresa';

// Comprobamos si el producto es variable y tiene atributos
if ( $product->is_type( 'variable' ) && $product->has_attributes() ) {
$attributes = array_keys( $product->get_attributes() );
$attribute = reset( $attributes ); // Tomamos solo el primer atributo para simplificar

?>
<script>
jQuery(function($) {
$('select#<?php echo esc_attr( $attribute ); ?>').change(function() {
var selectedOption = $(this).val();
var termName = '<?php echo esc_js( $term_name ); ?>';
if (selectedOption === termName) {
// Oculta el botón de "Añadir al carrito"
$('.single_add_to_cart_button').hide();
// Oculta el campo de cantidad
$('.quantity').closest('.woocommerce-variation-add-to-cart').hide();
// Agrega un mensaje personalizado
$('.woocommerce-variation-add-to-cart').after('<p class="custom-message">Eres una empresa rellena el siguiente formulario de contacto y te informaremos de bonificaciones.</p>');
} else {
// Muestra el botón de "Añadir al carrito"
$('.single_add_to_cart_button').show();
// Muestra el campo de cantidad
$('.quantity').closest('.woocommerce-variation-add-to-cart').show();
// Elimina el mensaje personalizado si existe
$('.custom-message').remove();
}
});
});
</script>
<?php
}
}

Con esto ya lo tenemos, si seleccionamos empresa ocultará el botón de ‘Añadir al carrito’ y el campo de ‘Cantidad’, además de añadiremos el mensaje personalizado ‘Eres una empresa rellena el siguiente formulario de contacto y te informaremos de bonificaciones.’

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

12 + 7 =

Empiezapori es agente digitalizador de la ayuda Kit Digital

Somos agente digitalizador de la ayuda Kit Digital. Te ayudamos en la creación de tu sitio web o comercio electrónico y gestionamos tus redes sociales.
Llámanos (93 470 00 37) o rellena el formulario y nos pondremos en contacto contigo. Te ayudamos a gestionar la ayuda.
Para más información y contacto haz clic en el siguiente enlace.

Scroll al inicio