在 WooCommerce Checkout 中应用优惠券时,订单总额后的优惠券表单会删除客户数据

问题描述 投票:0回答:1

我对我的 WooCommerce 结帐进行了一些调整(将折扣代码放置在其他位置的代码)。它可以工作,但是当添加此代码并且客户应用折扣代码时,它会删除客户已填写的所有信息,因此他们需要再次写下自己的姓名、地址、电子邮件和电话。

如何调整此代码以防止数据被删除,迫使客户输入两次?

/*
 * Removing default "Coupon form" from the top of the checkout page
 */
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );

/*
 * Hooking "Coupon form" after order total in checkout page with custom function
 */
add_action( 'woocommerce_review_order_after_order_total', 'woocommerce_checkout_coupon_form_custom' );

/*
 * Rendering html for "Coupon form" with custom function
 */
function woocommerce_checkout_coupon_form_custom() {
    echo '<tr class="coupon-form"><td colspan="2">';
    wc_get_template(
        'checkout/form-coupon.php',
        array(
            'checkout' => WC()->checkout(),
        )
    );
    echo '</td></tr>';
}

/* Åben rabatkode felt */

//Tilpas CSS
function mujuonly_add_inline_css() {

    $mustlogin_custom_css = "
        .woocommerce-form-coupon {
            display:block !important;
        }
    ";

  //Styling i CSS visningen
  wp_add_inline_style( 'woocommerce-inline', $mustlogin_custom_css ); //Variabel videregives til sheet

}
add_action( 'wp_enqueue_scripts', 'mujuonly_add_inline_css' ); //CSS style
php jquery woocommerce checkout coupon
1个回答
0
投票

你需要一些不同的东西:
我们没有删除原来的优惠券表单,而是用一些 CSS 隐藏它。
然后我们在订单总数后添加克隆的修改可见版本。
使用一些 JavaScript,我们将填写隐藏的优惠券字段并提交优惠券。

enter image description here

代码:

// Inline CSS on checkout page only
add_action('wp_head', 'custom_coupon_form_inline_css', 900);
function custom_coupon_form_inline_css() {
    if ( is_checkout() && !is_wc_endpoint_url() ) {
        echo '<style>.woocommerce-form-coupon-toggle{display:none;}
        input[name="coupon_code2"]{width:200px;margin-right:24px;}</style>';
    }
}

// Display cloned modified coupon field and button after order total in Checkout + JS
add_action('woocommerce_review_order_after_order_total', 'display_review_order_custom_coupon_field');
function display_review_order_custom_coupon_field() {
    printf('<tr><th colspan="2"><div style="margin-bottom:6px;">' . __('Have a coupon?', 'woocommerce') . '</div>
    <input type="text" name="coupon_code2" class="input-text" placeholder="Coupon code" id="coupon_code2" value="">
    <button type="button" class="button" name="apply_coupon2" value="Apply coupon">Apply coupon</button>
    </th></tr>');

    wc_enqueue_js("$(document.body).on('input','input[name=coupon_code2]', function(){
        $('input[name=coupon_code]').attr('value', $(this).val());
    });
    $(document.body).on('click','button[name=apply_coupon2]', function(){
        $('button[name=apply_coupon]').trigger('click');
    });");
}

代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。

© www.soinside.com 2019 - 2024. All rights reserved.