如何在最后验证我的自定义WooCommerce结帐字段?

时间:2018-06-12 17:51:34

标签: woocommerce hook-woocommerce

我为WooCommerce创建了一个自定义结帐字段。我还添加了验证。但是在点击下订单后,我的自定义字段也会检查它是否已经过验证。但是,我想检查我的自定义字段是否有效。我的意思是,将检查所有其他必填字段,之后将检查我的自定义字段。 下面是我的代码结构:

function otp_func($checkout) {
  .............................
}
  add_action( 'woocommerce_after_checkout_billing_form', 'otp_func', 10 );
  add_action('woocommerce_checkout_process','my_custom_checkout_field_process');
  function my_custom_checkout_field_process() {
        ..........................
   }

以下是我的验证码,如果所有其他字段成功验证,我想在最后运行:

if (!$_POST['otp_field']) {
    wc_add_notice( __( 'OTP field is blank' ), 'error' );
} else if ( $_POST['otp_field'] != $otp_verify_report ) {
    wc_add_notice( __( 'Invalid OTP or OTP has been expired!' ), 'error' );
}

2 个答案:

答案 0 :(得分:0)

您可以试试:

function customise_checkout_field_process()
{
    if (!$_POST['the_customised_field_name']) wc_add_notice(__('the warning message') , 'error');
}

答案 1 :(得分:0)

使用以下代码验证新字段。

在主题functions.php

中添加以下代码
add_action( 'woocommerce_after_checkout_validation', 'wc_check_confirm_password_matches_checkout', 10, 2 );

function wc_check_confirm_password_matches_checkout( $posted ) {
    $checkout = WC()->checkout;
    if ( ! empty( $posted['otp_field'] ) ) {
        wc_add_notice( __( 'OTP field is blank' ), 'error' );
    } else if ( $posted['otp_field'] != $otp_verify_report ) {
        wc_add_notice( __( 'Invalid OTP or OTP has been expired!' ), 'error' );
    }
}