【问题标题】:Disable add to cart button based on WooCommerce product custom stock status根据 WooCommerce 产品自定义库存状态禁用添加到购物车按钮
【发布时间】:2021-01-23 07:38:41
【问题描述】:

当前在 woocommerce 中,如果库存状态为 out of stock,则添加到购物车按钮已禁用。我使用woocommerce_product_stock_status_options 添加带有标签Discontinued product 的新库存状态,现在我正在寻找一种方法来处理这个产品,就像它缺货一样。

因为我认为最好将不再生产的产品与在另一家商店生产和销售但没有库存的产品区分开来。

【问题讨论】:

    标签: php wordpress woocommerce product stock


    【解决方案1】:

    您可以使用以下内容根据自定义库存状态禁用添加到购物车按钮(您将在其中将 custom_status_slug 替换为您的自定义状态信息)

    add_filter('woocommerce_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
    add_filter('woocommerce_variation_is_purchasable', 'filter_is_purchasable_callback', 10, 2 );
    function filter_is_purchasable_callback( $purchasable, $product ) {
        if ( $product->get_stock_status() === 'custom_status_slug' ) {
            return false;
        }
    
        return $purchasable;
    }
    

    代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

    【讨论】:

    • 感谢 LoicTheAztec,它解决了我的问题。既然我想学得更好,请您告诉我您在add_filter中提到的数字吗?为什么你提到10, 2
    • 最后一个数字 (2) 是我们从钩子函数中使用的参数(变量)的数量(多于一个时是必需的),10 是默认的钩子优先级(当您指定参数的数量)。
    • 谢谢!与您添加自己的库存状态的所有指南配合得很好,奇怪的是它不是这些指南的一部分。
    【解决方案2】:

    我提出了一个解决方案,在产品页面上显示库存状态,但不显示“添加到购物车”按钮

    add_filter('woocommerce_product_is_in_stock', 'filter_is_in_stock_callback', 10, 2 );
    function filter_is_in_stock_callback( $stock, $product ) {
        if ( $product->get_stock_status() === 'custom_status_slug' ) {
            return false;       
        }
        return $stock;
    }

    感谢第一个回答:)

    【讨论】:

      猜你喜欢
      • 2020-09-01
      • 2015-12-04
      • 2019-07-16
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 2018-09-30
      • 2021-01-31
      • 2019-12-13
      相关资源
      最近更新 更多