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

每天晚上,我都会将供应商的产品加载到 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”,则删除添加到购物车按钮。


郎朗坤
浏览 241回答 1
1回答

噜噜哒

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 文件中。测试和工作。
打开App,查看更多内容
随时随地看视频慕课网APP