Woocommerce 自定义结帐字段值在页面重新加载/刷新时刷新

问题描述

我已将自定义结帐字段添加到我的 woocommerce 结帐页面。字段工作正常,显示/验证等。但是我想要的是当有人在进行结帐过程并添加表单字段值并且现在刷新页面时这些值应该在那里。目前客户不得不租用那些有点烦人并且不鼓励他们购买的字段。请帮助我如何保存这些值以及我在这里缺少什么。

add_action('woocommerce_before_order_notes','citizen_tax_checkout_fields');
function citizen_tax_checkout_fields($checkout) {
    echo '<div id="custom_checkout_field"><h3>' . __('Tax Options') . '</h3>';
        $fields = woocommerce_form_field('is_citizen',array(
            'type' => 'radio','class' => array('tax-radio-field','update_totals_on_change'),'default' => 0,'required' => true,'label' => __('Are you a citizen?','woocommerce'),'options' => array('No','Yes'),),$checkout->get_value( 'is_citizen' ));

        woocommerce_form_field('citizen_national_id',array(
            'type' => 'text','class' => array('tax-national-id-field','hide-js',// 'required' => true,'placeholder' => __('XXXXXXXXX','label' => __('National ID',$checkout->get_value( 'citizen_national_id' ));

    echo '</div>';

}

add_action( 'woocommerce_after_checkout_form','conditionally_hide_show_new_field',9999 );
function conditionally_hide_show_new_field() {
  wc_enqueue_js( "
        $('#citizen_national_id_field label .optional').remove();
        $('#citizen_national_id_field label').append('<abbr class=\"required\" title=\"required\">*</abbr>');
        function setCitizenFields() {
            var isCitizen = $('input[name=\"is_citizen\"]:checked').val();
            if (isCitizen == 1) {
                $('#citizen_national_id_field').removeClass('hide-js');
            } else {
                $('#citizen_national_id_field').addClass('hide-js');
            }
        }
        $('input[name=\"is_citizen\"]').change(setCitizenFields).change();
  ");
}

add_action( 'woocommerce_checkout_process','citize_field_validation' );
function citize_field_validation() {
    if ( isset($_POST['is_citizen']) && $_POST['is_citizen'] == 1 && isset($_POST['citizen_national_id']) && empty(trim($_POST['citizen_national_id'])) ) {
        wc_add_notice( __("<strong>National ID</strong> is a required field.","woocommerce"),"error" );
    }
}

add_action('woocommerce_checkout_update_order_Meta','custom_checkout_field_update_order_Meta');
function custom_checkout_field_update_order_Meta($order_id) {
    if ( isset($_POST['is_citizen']) && isset($_POST['citizen_national_id']) ) {
        update_post_Meta($order_id,'is_citizen',sanitize_text_field($_POST['is_citizen']));
        update_post_Meta($order_id,'citizen_national_id',sanitize_text_field($_POST['citizen_national_id']));
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)