如何在WooCommerce产品页面中添加优惠券

3
我正在使用WordPress(4.9.8)和WooCommerce(3.4.5),我想在单个产品页面上添加一个优惠券字段。我一直在查看所有的WooCommerce模板,但我找不到在产品页面上添加WooCommerce优惠券字段的方法。
有什么建议吗?
我不想使用插件来实现这个功能。
1个回答

11
以下代码将在单个产品页面添加一个自定义文本输入框,用于优惠券,在“添加到购物车”按钮之前。 enter image description here 如果在该字段中输入优惠券代码,则将应用该代码到购物车中。
代码如下:
// Add a text input field inside the add to cart form
add_action('woocommerce_single_product_summary','add_custom_text_field_single_product', 2 );
function add_custom_text_field_single_product(){
    global $product;

    if( $product->is_type('variable') ){
        add_action('woocommerce_before_single_variation','custom_product_text_input_field', 30 );
    } else {
        add_action('woocommerce_before_add_to_cart_button','custom_product_text_input_field', 30 );
    }
}

function custom_product_text_input_field(){
    echo '<div class="hidden-field">
    <p class="form-row product-coupon form-row-wide" id="product-coupon_field" data-priority="">
        <label for="product-coupon" class="">' . __("Do you have a coupon code?") . '</label>
        <span class="woocommerce-input-wrapper">
            <input type="text" class="input-text " name="product-coupon" id="product-coupon" placeholder="'.__("Coupon code").'" value="">
        </span>
    </p></div>';
}

// Apply the coupon code from product custom text imput field
add_filter('woocommerce_add_cart_item_data', 'coupon_code_product_add_to_cart', 20, 3);
function coupon_code_product_add_to_cart($cart_item_data, $product_id, $variation_id) {
    if (isset($_POST['product-coupon']) && ! empty($_POST['product-coupon'])) {
        WC()->cart->apply_coupon( sanitize_title( $_POST['product-coupon'] ) );
    }
    return $cart_item_data;
}

将代码放入您的活动子主题(或活动主题)的function.php文件中。已经测试并且有效。

如果你想要让优惠券字段使用Ajax动力,这太复杂了,对于这个问题在Stack Overflow上没有提供任何代码的情况下,这个问题太广泛了。


非常感谢。这太完美了。再次感谢。 - bjornen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接