为了账号安全,请及时绑定邮箱和手机立即绑定

在 WooCommerce 中隐藏产品可见性时隐藏添加到购物车按钮

在 WooCommerce 中隐藏产品可见性时隐藏添加到购物车按钮

PHP
郎朗坤 2021-12-03 15:52:57
每天晚上,我都会将供应商的产品加载到 CSV 文件中。他们在每个 CSV 中删除和添加产品。如果产品不再在 CSV 中,而之前在 CSV 中,我的插件会将产品可见性置于隐藏状态。这样链接仍然有效,所以在搜索控制台等中没有 404 错误,但该产品没有显示在我的商店中。但是,一些客户仍然从不同的域(即谷歌)访问这些链接。他们登陆“隐形产品”,并且可以在产品不再可用时单击“购物车中”按钮。因此我的问题是:我怎样才能(在functions.php 中?)确保当产品的可见性被隐藏时,购物车按钮被删除(一个简单的显示:无;就可以)。我使用 WP Import 来导入 CSV 以及产品被置于可见性的方式:隐藏是这样的:function my_is_post_to_delete($is_post_to_delete, $post_id, $import) {     // Get an instance of the product variation from a defined ID    $my_product = wc_get_product($post_id);    // Change the product visibility    $my_product->set_catalog_visibility('hidden');    // Save and sync the product visibility    $my_product->save();    return false;}所以我需要这样的东西:如果 product_visibility是“ hidden”,则删除添加到购物车按钮。
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

woocommerce_is_purchasable当产品目录可见性“隐藏”时,您可以简单地使用专用过滤器挂钩,如下所示:


add_filter('woocommerce_is_purchasable', 'filter_product_is_purchasable', 10, 2 );

function filter_product_is_purchasable( $purchasable, $product ) {

    if( 'hidden' === $product->get_catalog_visibility() ) {

        $purchasable = false;


    }

    return $purchasable;

}

代码位于活动子主题(或活动主题)的 functions.php 文件中。测试和工作。


注意:如果客户之前的购物车会话中包含产品,它将从其中删除。


更新- 对于外部(或附属)产品,请尝试使用以下内容:


add_action( 'woocommerce_single_product_summary', 'remove_product_add_to_cart_button', 4 );

function remove_product_add_to_cart_button(){

    global $product;


    if( $product->is_type('external') && 'hidden' === $product->get_catalog_visibility() ) {

        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

    }

}

代码位于活动子主题(或活动主题)的 functions.php 文件中。测试和工作。


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 240 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信