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.
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.
// 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.
La entrada Ocultar compra de ciertos productos en WooCommerce es un artículo reciente del sitio DecodeCMS.
0 Commentaires