在为客户解决方案的同时,我不得不将隐藏的产品从购物车,结帐,订单收到和电子邮件中隐藏起来。隐藏的产品已经没有显示在商店和类别页面上,但如果他们以编程方式添加到购物车,它们会在购物车上显示。

一个艰巨的任务,但像往常一样,我来解决这个问题 🙂

首先,让您的 WooCommerce 产品隐藏!
想要的结果:从购物车中隐藏隐藏的产品(还有 Checkout,订单接收和电子邮件!)

PHP 代码段:从 WooCommerce 购物车,结帐,订单,电子邮件隐藏隐藏的产品

/**
 * @snippet       Hide Hidden Products from Cart, Checkout, Order - WooCommerce

 * @sourcecode    https://businessbloomer.com/?p=21936
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 2.6.14
 */

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', 10, 2 );

function bbloomer_hide_hidden_product_from_cart( $visible, $cart_item, $cart_item_key ) {
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
if ( get_post_meta( $product_id, '_visibility', true ) == 'hidden' ) {
        $visible = false;
    }
    return $visible;
}

function bbloomer_hide_hidden_product_from_order( $visible, $order_item ) {
if ( get_post_meta( $order_item['product_id'], '_visibility', true ) == 'hidden' ) {
        $visible = false;
    }
    return $visible;
}


可以在哪里添加此代码?

您可以将 PHP 代码片段放置在主题或子主题的 functions.php 文件的底部(如果是 CSS 代码,请添加到主题的 style.css 文件底部),修改之前建议先备份原始文件,若出现错误请先删除此代码。


这段代码是否正常可用?

或者是您有更好的解决方案想要分享?请到薇晓朵 WooCommerce 中文论坛留言告知,我们希望可以帮到更多国内的 WooCommerce 用户也希望您的参与。


需要关于 WooCommerce 的帮助?

请观看我们提供的免费视频教程或到薇晓朵 WooCommerce 中文论坛提问,会有专业技术团队提供相关帮助。