如何在 WooCommerce 购物车页面上隐藏某些产品
How to hide certain products on WooCommerce cart page
我已经使用 CSS 更改了主 WooCommerce 购物车页面以隐藏此页面上的产品。
更改的原因,我试图将购物车页面专门用于仅显示购物车中的产品“感谢您的提示”,而不将任何 WooCommerce 产品设置更改为隐藏。
已添加到购物车的所有其他产品需要在主 WooCommerce 购物车页面上隐藏。
我发现我无法使用 CSS 实现此目的,因为我对 CSS 所做的更改将隐藏所有已添加到购物车的产品。
我最接近找到 PHP 解决方案的是以下片段:
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;
}
但是,这并没有给出预期的结果。有什么建议吗?
要仅在购物车页面而不是其他地方隐藏某些 WooCommerce 产品,只需使用 woocommerce_cart_item_visible
过滤器挂钩即可。
在 $targeted_ids
数组中,您可以指示哪些产品 ID 应保持可见。这也适用于 variationIDs
function filter_woocommerce_cart_item_visible( $true, $cart_item, $cart_item_key ) {
// The targeted product ids
$targeted_ids = array( 30, 53 );
// Computes the intersection of arrays
if ( ! array_intersect( $targeted_ids, array( $cart_item['product_id'], $cart_item['variation_id'] ) ) ) {
$true = false;
}
return $true;
}
add_filter( 'woocommerce_cart_item_visible', 'filter_woocommerce_cart_item_visible', 10, 3 );
反向应用,并隐藏数组中出现的产品 ID
替换
if ( ! array_intersect(..
有
if ( array_intersect(..
我已经使用 CSS 更改了主 WooCommerce 购物车页面以隐藏此页面上的产品。
更改的原因,我试图将购物车页面专门用于仅显示购物车中的产品“感谢您的提示”,而不将任何 WooCommerce 产品设置更改为隐藏。
已添加到购物车的所有其他产品需要在主 WooCommerce 购物车页面上隐藏。
我发现我无法使用 CSS 实现此目的,因为我对 CSS 所做的更改将隐藏所有已添加到购物车的产品。
我最接近找到 PHP 解决方案的是以下片段:
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;
}
但是,这并没有给出预期的结果。有什么建议吗?
要仅在购物车页面而不是其他地方隐藏某些 WooCommerce 产品,只需使用 woocommerce_cart_item_visible
过滤器挂钩即可。
在 $targeted_ids
数组中,您可以指示哪些产品 ID 应保持可见。这也适用于 variationIDs
function filter_woocommerce_cart_item_visible( $true, $cart_item, $cart_item_key ) {
// The targeted product ids
$targeted_ids = array( 30, 53 );
// Computes the intersection of arrays
if ( ! array_intersect( $targeted_ids, array( $cart_item['product_id'], $cart_item['variation_id'] ) ) ) {
$true = false;
}
return $true;
}
add_filter( 'woocommerce_cart_item_visible', 'filter_woocommerce_cart_item_visible', 10, 3 );
反向应用,并隐藏数组中出现的产品 ID
替换
if ( ! array_intersect(..
有
if ( array_intersect(..