Skip to content

Instantly share code, notes, and snippets.

@shivapoudel
Last active January 13, 2023 04:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shivapoudel/a29cc1a935728563b2185912fda15319 to your computer and use it in GitHub Desktop.
Save shivapoudel/a29cc1a935728563b2185912fda15319 to your computer and use it in GitHub Desktop.
Exclude hidden products from cart area.
<?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' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment