php - 如果 WooCommerce 购物车商品缺货,请勿使用优惠券

标签 php wordpress woocommerce cart coupon

到目前为止,这就是我所得到的:

add_filter('woocommerce_coupon_is_valid','coupon_always_valid',99,2);
function coupon_always_valid($valid, $coupon){
    global $woocommerce;
    $valid = true;
    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
       // if($values['data']->backorders_allowed()){ //check if backorders are allowed on this product
            // get the stock quantity - returns the available amount number
            $stock_info = $values['data']->get_stock_quantity();

            if($stock_info < 1){
                $vaild = false;

                break;
            }
        }
    // give error message...

    return $valid ; 
}

我不明白为什么这个选项一开始就没有内置到 woocommerce 中。我们希望耗尽库存,但也接受产品的延期交货,但我们不想对任何延期交货提供折扣。

如有任何帮助,我们将不胜感激。

最佳答案

您的代码中存在 $vaild = false; 的拼写错误(错误的变量名称应为 $valid)以及额外的内容} 因为您注释了 if 语句,导致了错误

还在下面,我已将您的代码升级到更实际的版本(将 global $woocommerce$woocommerce->cart 替换为 WC( )->购物车):

add_filter( 'woocommerce_coupon_is_valid', 'coupon_always_valid', 99, 2 );
function coupon_always_valid( $valid, $coupon ){

    $valid = true;

    foreach ( WC()->cart->get_cart() as $cart_item ) {
        // if($values['data']->backorders_allowed()){ //check if backorders are allowed on this product
        // get the stock quantity - returns the available amount number
        $stock_info = $cart_item['data']->get_stock_quantity();

        if( $stock_info < 1 ){
            $valid = false; ## <== HERE a typo error
            break;
        }
        // } ## <== HERE commented
    }
    return $valid ;
}

代码位于事件子主题(或主题)的 function.php 文件中或任何插件文件中。

现在这段代码应该可以正常工作而不会出现错误

关于php - 如果 WooCommerce 购物车商品缺货,请勿使用优惠券,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45641987/

相关文章:

javascript - 在 jQuery AJAX 中第二次尝试后表单提交不起作用

php - 自定义和添加 woocommerce 模板数据

wordpress - 在 woocommerce 搜索中包含自定义字段值

php - 在新订单电子邮件通知中显示客户 IP 地址

php - 无法将语句插入数据库

php - 使用 gettext 在 PHP 中添加对 i18n 的支持?

php - 我可以创建一个不带括号的函数吗?

css - 撤消 WordPress 标题上的文本修饰大写(Twentyfourteen 主题)

css - 字体和 Wordpress : Font not showing some UTF-8 characters it should support

php - WordPress 中的主题编辑器样式表文件编辑器错误