返回

php-优惠券代码不应与自定义折扣混淆

发布时间:2022-06-27 15:37:34 253
# 后端

我有一个使用 Woocommerce 的结帐页面,我使用以下代码添加了折扣,因为我有一个复选框,用户可以在其中检查并且折扣将适用。这是产品页面,请添加其中任何一个,然后进入结帐页面,在那里您将获得带有“高级、军事等”标签的折扣复选框。您可以尝试输入“SAVE15”以申请优惠券代码。

// Add a custom checkbox fields after billing fields
function action_woocommerce_after_checkout_billing_form( $checkout ) {
// Add a custom checkbox field

echo '<h3 class="discount-type">' . __('DISCOUNT TYPE') . '</h3>';

woocommerce_form_field( 'discount30', array(
    'type'  => 'checkbox',
    'label' => __( ' Senior, Military, Police, Firefighter, EMT Discount, Teacher', 
'woocommerce' ),
    'class' => array( 'form-row-wide' ),
), '' );   
}
add_action( 'woocommerce_after_checkout_billing_form', 
'action_woocommerce_after_checkout_billing_form', 10, 1 );

// Remove "(optional)" label on "discount30" field
function filter_woocommerce_form_field( $field, $key, $args, $value ) {
// Only on checkout page
if ( $key === 'discount30'  && is_checkout() ) {
    $optional = '&nbsp;<span class="optional">(' . esc_html__( 'optional', 'woocommerce' ) . 
')</span>';
    $field = str_replace( $optional, '', $field );
}

return $field;
}
add_filter( 'woocommerce_form_field' , 'filter_woocommerce_form_field', 10, 4 );

// jQuery - Ajax script
function action_wp_footer() {
// Only on Checkout
if ( is_checkout() && ! is_wc_endpoint_url() ) :

if ( WC()->session->__isset('enable_fee') )
    WC()->session->__unset('enable_fee')
?>
<script type="text/javascript">
jQuery( function($){
    if ( typeof wc_checkout_params === 'undefined' ) 
        return false;

    $( 'form.checkout' ).on( 'change', 'input[name=discount30]', function(e) {
        var fee = $(this).prop('checked') === true ? '1' : '';

        $.ajax({
            type: 'POST',
            url: wc_checkout_params.ajax_url,
            data: {
                'action': 'enable_fee',
                'enable_fee': fee,
            },
            success: function (result) {
                $('body').trigger('update_checkout');
            },
        });
    });
});
</script>
<?php
endif;
}
add_action( 'wp_footer', 'action_wp_footer' );

// Get Ajax request and saving to WC session
function get_enable_fee() {
if ( isset($_POST['enable_fee']) ) {
    WC()->session->set( 'enable_fee', ( $_POST['enable_fee'] ? true : false ) );
}
die();
}
add_action( 'wp_ajax_enable_fee', 'get_enable_fee' );
add_action( 'wp_ajax_nopriv_enable_fee', 'get_enable_fee' );

// Add a custom 3 Cents Discount
function action_woocommerce_cart_calculate_fees( $cart ) {
// Only on checkout
if ( ( is_admin() && ! defined( 'DOING_AJAX' ) ) || ! is_checkout() )
    return;

// Get number of items in the cart.
$items_in_cart = $cart->get_cart_contents_count();

// Calculate
$discount = 0.03 * $items_in_cart;

// Apply discount
if ( WC()->session->get('enable_fee') ) {      
    $cart->add_fee( __( 'Discount', 'woocommerce' ), -$discount );
}
}
add_action( 'woocommerce_cart_calculate_fees', 'action_woocommerce_cart_calculate_fees', 10, 1         
);

现在,我也在使用优惠券代码,但不希望它被混淆,因此,我如何才能做出一个条件,即如果有人输入优惠券代码,则应删除上述代码应用的折扣?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像