|
<?php |
|
/** |
|
* Filter hidden product from cart. |
|
* |
|
* @since 1.0.0 |
|
* |
|
* @param bool $visibility Visibility. |
|
* @param array $cart_item Cart item. |
|
* @param string $cart_item_key Cart item key. |
|
*/ |
|
function wc_hide_hidden_product_from_cart( $visibility, $cart_item, $cart_item_key ) { |
|
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); |
|
|
|
if ( 'hidden' === $_product->get_catalog_visibility() ) { |
|
$visibility = false; |
|
} |
|
|
|
return $visibility; |
|
} |
|
add_filter( 'woocommerce_cart_item_visible', 'wc_hide_hidden_product_from_cart', 10, 3 ); |
|
add_filter( 'woocommerce_widget_cart_item_visible', 'wc_hide_hidden_product_from_cart', 10, 3 ); |
|
add_filter( 'woocommerce_checkout_cart_item_visible', 'wc_hide_hidden_product_from_cart', 10, 3 ); |
|
|
|
/** |
|
* Filter hidden product from order. |
|
* |
|
* @since 1.0.0 |
|
* |
|
* @param bool $visibility Visibility. |
|
* @param array $order_item Order item. |
|
*/ |
|
function wc_hide_hidden_product_from_order( $visibility, $order_item ) { |
|
$_product = $order_item->get_product(); |
|
|
|
if ( 'hidden' === $_product->get_catalog_visibility() ) { |
|
$visibility = false; |
|
} |
|
|
|
return $visibility; |
|
} |
|
add_filter( 'woocommerce_order_item_visible', 'wc_hide_hidden_product_from_order', 10, 2 ); |
|
|
|
/** |
|
* Exclude hidden products from cart count. |
|
* |
|
* @since 1.0.0 |
|
* |
|
* @param int $quantity Cart item quantity. |
|
* |
|
* @return int |
|
*/ |
|
function wc_exclude_hidden_minicart_counter( $quantity ) { |
|
$hidden = 0; |
|
|
|
if ( ! WC()->cart->is_empty() ) { |
|
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { |
|
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); |
|
|
|
if ( 'hidden' === $_product->get_catalog_visibility() ) { |
|
$hidden += $cart_item['quantity']; |
|
} |
|
} |
|
|
|
$quantity -= $hidden; |
|
} |
|
|
|
return $quantity; |
|
} |
|
add_filter( 'woocommerce_cart_contents_count', 'wc_exclude_hidden_minicart_counter' ); |