Mientras trabajaba en una solución para un cliente, tuve que ocultar un producto oculto del carrito, el pago, el pedido recibido y los correos electrónicos. Los productos ocultos ya no se muestran en las páginas de la tienda y la categoría, pero sí se muestran en el carrito si se agregan al carrito «programáticamente».
Una tarea difícil, pero como siempre aquí vengo con la solución 🙂
Php Snippet: ocultar productos ocultos del carrito de WooCommerce, pago, pedido, correos electrónicos
/** * @snippet Hide Hidden Products from Cart, Checkout, Order - WooCommerce * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @testedwith WooCommerce 4.1 * @community https://businessbloomer.com/club/ */ add_filter( 'woocommerce_cart_item_visible', 'bbloomer_hide_hidden_product_from_cart' , 10, 3 ); add_filter( 'woocommerce_widget_cart_item_visible', 'bbloomer_hide_hidden_product_from_cart', 10, 3 ); add_filter( 'woocommerce_checkout_cart_item_visible', 'bbloomer_hide_hidden_product_from_cart', 10, 3 ); add_filter( 'woocommerce_order_item_visible', 'bbloomer_hide_hidden_product_from_order_woo333', 10, 2 ); function bbloomer_hide_hidden_product_from_cart( $visible, $cart_item, $cart_item_key ) { $product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); if ( $product->get_catalog_visibility() == 'hidden' ) { $visible = false; } return $visible; } function bbloomer_hide_hidden_product_from_order_woo333( $visible, $order_item ) { $product = $order_item->get_product(); if ( $product->get_catalog_visibility() == 'hidden' ) { $visible = false; } return $visible; }