Deshabilitar el botón "Añadir al carrito" cuando el producto está agotado

3 oct 2017, 15:49:18
Vistas: 20.5K
Votos: -1

Quiero deshabilitar el botón 'Añadir al carrito' cuando el producto está agotado usando código PHP o una configuración en el administrador de WooCommerce.

0
Todas las respuestas a la pregunta 5
0

Aquí hay algunos plugins que proporcionan la funcionalidad para ocultar los botones "Añadir al carrito" en la tienda y en la página de producto individual en WooCommerce,

[ https://wordpress.org/plugins/hide-add-to-cart-button/ ]

[ https://wordpress.org/plugins/remove-add-to-cart-woocommerce/ ]

Estos plugins realizarán lo siguiente,

1) Ocultar el botón Añadir al carrito en la página individual del producto. 2) Ocultar el botón Añadir al carrito en la página de categoría. 3) Ocultar el botón Añadir al carrito en la página de inicio y todas las demás páginas.

También puedes ocultarlo añadiendo la siguiente función en functions.php,

 /*
 * Sobreescribir mediante functions.php
 **/
 if (!function_exists('woocommerce_template_loop_add_to_cart')) {
 function woocommerce_template_loop_add_to_cart() {
    global $product;
    if ( ! $product->is_in_stock() || ! $product->is_purchasable() ) return;
    woocommerce_get_template('loop/add-to-cart.php');
  }
}
3 oct 2017 16:34:39
0

En lugar de sobrescribir la función, sería mejor manejar el filtro woocommerce_is_purchasable.

add_filter( 'woocommerce_is_purchasable', 'vna_is_purchasable', 10, 2 );
function vna_is_purchasable( $purchasable, $product ){
    return true || false; // dependiendo de tu condición
}
3 oct 2017 17:31:17
0

Me encontré con esta pregunta mientras ayudaba a un amigo. Sin ser un desarrollador de WordPress, y mucho menos de WooCommerce, aún así logré hacer que algo funcionara sin escribir ningún PHP, solo con CSS.

Parece que WooCommerce hace un buen trabajo "transformando" muchas propiedades del producto en clases CSS que luego se asignan a los contenedores HTML. No estoy seguro si está relacionado con el tema, pero en mi caso terminé con algunos contenedores que tenían la clase "instock" cuando el producto estaba disponible y "outofstock" cuando el producto estaba... agotado.

Cuando me di cuenta de eso, no tardé mucho en crear algunas reglas CSS para:

  1. Ocultar el botón
  2. Mostrar un mensaje en su lugar, usando pseudo-elementos CSS y content
  3. Hacer que parte del mosaico del producto sea semitransparente para que parezca más "inactivo"

No lo recomendaría para código de producción en una gran empresa, pero en mi caso funcionó lo suficientemente bien. Ah, y funciona bien con productos que tienen variaciones, obtienen la clase "outofstock" solo cuando todas las variaciones están agotadas.

No publicaré ningún código porque, como dije, no soy un experto, así que no puedo decir si mi HTML es "genérico de WooCommerce" o está vinculado con el tema utilizado o incluso es completamente personalizado (normalmente no soy el que crea y gestiona el sitio), pero aún así creo que puede ayudar, ya que me ayudó muchísimo.

21 abr 2021 17:18:21
0

Para eliminar el botón de agregar al carrito de una página de producto específica, puedes agregar este código en functions.php (ubicado en la carpeta del tema):

add_filter('woocommerce_is_purchasable', 'wpblog_specific_product');
function wpblog_specific_product($purchaseable_product_wpblog, $product) {
return ($product->id == specific_product_id (512) ? false :     $purchaseable_product_wpblog);
}

Referencia: https://www.wpblog.com/add-to-cart-button-in-woocommerce-store/

2 nov 2017 09:23:41
0
-1

Creo que puedes usar el siguiente fragmento de código:

add_action( 'woocommerce_after_shop_loop_item', function() {
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
};
3 jun 2019 15:13:46