• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Plugins / Ocultar compra de ciertos productos en WooCommerce

Ocultar compra de ciertos productos en WooCommerce

[ 17 abril 2024 ] [ Autor: Jhon Marreros Guzmán ][ Plugins - Intermedio] [ ]

funcionalidad woocommerce

Suscríbete a DecodeCMS:  

En este artículo veremos cómo evitar que un producto determinado se pueda comprar en WooCommerce, ocultaremos el botón de añadir productos individuales especificados por el ID.

 

Resultado final

Al final lo que queremos obtener es un producto sin la opción de añadir al carrito de compra, ya sea por el botón o directamente desde una URL.

Ocultar ciertos productos

 

Opción 1 – Código para ocultar la compra de productos con interfaz de usuario

Existen varios plugins que realizan este tipo de funcionalidad, sin embargo en este artículo veremos como hacerlo directamente a través de código.

Al final con el siguiente código obtendremos como parte de la configuración un check que puedes marcar para que el producto no se pueda comprar.

Check para deshabilitar compra de producto

 

Puedes agregar el siguiente código como parte del archivo functions.php de tu tema hijo o usando algún plugin de Snippets.
// Add custom field in product settings
add_action( 'woocommerce_product_options_general_product_data', 'add_condition_purchasable_product' );
function add_condition_purchasable_product() {
	echo '<div class="condition_purchasable_product">';
	woocommerce_wp_checkbox( array(
		'id'          => '_disable_purchasable',
		'label'       => __( 'Disable add to cart', 'woocommerce' ),
		'description' => __( 'Check this box if the product is not purchasable', 'woocommerce' )
	) );
	echo '</div>';
}

// Save custom field in product settings
add_action( 'woocommerce_process_product_meta', 'save_condition_purchasable_product' );
function save_condition_purchasable_product() {
	$disable_purchasable = isset( $_POST['_disable_purchasable'] ) ? 'yes' : 'no';
	update_post_meta( get_the_ID(), '_disable_purchasable', $disable_purchasable );
}


// Remove add to cart button for not purchasable products
add_filter( 'woocommerce_is_purchasable', 'remove_add_to_cart_not_purchasable_products', 10, 2 );
function remove_add_to_cart_not_purchasable_products( $is_purchasable, $product ) {
	$disable_purchasable = get_post_meta( $product->get_id(), '_disable_purchasable', true );
	if ( $disable_purchasable == 'yes' ) {
		$is_purchasable = false;
	}

	return $is_purchasable;
}

 
En el código anterior:

  • Definimos el Hook woocommerce_product_options_general_product_data que nos permitirá añadir nuevos campos a la pantalla de WooCommerce, en nuestro caso lo haremos con la función de creación de checkbox que tiene WooCommerce woocommerce_wp_checkbox
  • También necesitaremos almacenar el valor que tendrá el check al guardar el producto, esto lo realizamos con la siguiente porción de código, es decir el Hook woocommerce_process_product_meta, obtenemos el metadato del nombre del campo y lo actualizamos con la función update_post_meta()
  • Para permitir mostrar o no el botón de añadir al carrito usamos finalmente el Hook woocommerce_is_purchasable, obtenemos el metadato guardado y en caso sea yes establecemos el parámetro a falso

 

Opción 2 – Código para ocultar la compra de productos usando sus IDs

Esta es una opción alterna más liviana, aunque en este caso tendrás que definir los IDs de los productos en una variable.

function remove_add_to_cart_not_purchasable_products( $is_purchasable, $product ) {
	$not_purchasable_ids = [ 123, 456 ]; // Products that are not purchasable
	if ( in_array( $product->get_id(), $not_purchasable_ids ) ) {
		$is_purchasable = false;
	}

	return $is_purchasable;
}

add_filter( 'woocommerce_is_purchasable', 'remove_add_to_cart_not_purchasable_products', 10, 2 );

En el código anterior:

  • Usamos el Hook de filtro woocommerce_is_purchasable que hace referencia remove_add_to_cart_not_purchasable_products
  • Dentro de la función remove_add_to_cart_not_purchasable_products definimos la variable de array $not_purchasable_ids en donde definimos los IDs de los productos que no se pueden comprar
  • Hacemos una comprobación con el argumento de objeto de producto y verificamos si el ID esta en el array
  • Si se encuentra en el array de IDs, establecemos la variable de retorno a falso
  • Sino se cumple la condición devolvemos la variable sin modificaciones

 

Conclusión

Como has podido comprobar puedes especificar que ciertos productos de tu tienda no se puedan comprar, lo puedes hacer identificando el ID o a través de una interfaz y agregando esta funcionalidad a través de código.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Limitar la búsqueda de WordPress a productos de WooCommerceLimitar la búsqueda de WordPress a productos de WooCommerce
  • Mostrar un mensaje en la primera compra en WooCommerceMostrar un mensaje en la primera compra en WooCommerce
  • Registrar usuarios sólo para la compra de ciertos productos en WooCommerceRegistrar usuarios sólo para la compra de ciertos productos en WooCommerce
  • Deshabilitar métodos de pago en WooCommerce según el total de pedidoDeshabilitar métodos de pago en WooCommerce según el total de pedido
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (2 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. Nyahbingi

    19 abril, 2024

    Hola Jhon,
    Muy buen artículo es justo lo que quiero pero hay un problema, sólo funciona para productos simples. La mayoría de los productos que tengo son variables y en ellos la 1ª opción del checkbox no sale, y la segunda de poner el ID del producto no funciona. Estoy seguro de que es una tontería como que cada variación tiene un identificador diferente o algo así, pero no puedo encontrar la solución, ¿se podría hacer por sku?.
    Gracias, un saludo.

    • Jhon Marreros Guzmán

      19 abril, 2024

      Hola, prueba hacerlo de la segunda forma, el ID de la variación del producto lo puedes al ver las variaciones en la pantalla de edición del producto, empiezan con un signo numeral, por ejemplo #123

  2. Gemma

    19 noviembre, 2024

    Mil gracias!! Me ha valido perfectamente la primera opción y me has evitado 80€ y tener un pluggin extra . Muy bien explicado por cierto

    • Jhon Marreros Guzmán

      20 noviembre, 2024

      Hola Gremma
      Que bueno. Saludos!

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Omnisend
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad SEO social woocommerce

Populares

Post Meta desde la API de WordPress

Cómo eliminar todos los productos de WooCommerce

Mostrar mensajes en la administración de WordPress y en Gutenberg

Manejo de Sesiones en WordPress

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2026 Todos los derechos reservados