在Woocommerce我的帐户地址和帐户详细信息中设置唯一的验证错误通知

时间:2018-11-13 11:12:27

标签: php wordpress validation woocommerce hook-woocommerce

如果必填字段为空,则Woocommerce结帐页面和我的帐户页面中的计费字段会显示单个错误。好吧,如果所有字段都是空的,那么这些空字段的所有错误将显示为:
-名字是必填字段
-姓氏为必填字段
-街道地址为必填字段
等等……

如果所有必填字段为空,我只想显示一个错误,例如“错误:所有字段均为空。请填写所有必填字段以下订单。”好吧,我以某种方式在结帐页面上使用以下代码解决了此问题:

add_action( 'woocommerce_after_checkout_validation', 'show_one_err', 9999, 2);
function show_one_err( $fields, $errors ){
    // if any validation errors
    if( !empty( $errors->get_error_codes() ) ) {

        // remove all of them
        foreach( $errors->get_error_codes() as $code ) {
            $errors->remove( $code );
        }

        // add our custom one
        $errors->add( 'validation', 'Please fill in all required fields to place order.' );
    }
}

我现在的问题是如何在Woocommerce我的帐户页面-帐单邮寄地址以及我的帐户-帐户详细信息标签中应用这些更改。这些更改的唯一目的是在所有Woocommerce字段中均具有一致的错误通知(请参见下面的图片)。

结帐页面

Checkout page

我的帐户-帐单邮寄地址

My Account - billing address

我的帐户-帐户详细信息

My Account - account details

1 个答案:

答案 0 :(得分:1)

要使用“帐户帐单和收货地址”以及“帐户详细信息”中的唯一自定义项替换所有字段验证错误,您将使用以下使用两个验证挂钩的挂钩函数:

add_action( 'woocommerce_save_account_details_errors', 'account_validation_unique_error', 9999 ); // Details
add_action( 'woocommerce_after_save_address_validation', 'account_validation_unique_error', 9999 ); // Adresses
function account_validation_unique_error(){
    $notices = WC()->session->get( 'wc_notices' ); // Get Woocommerce notices from session

    // if any validation errors
    if( $notices && isset( $notices['error'] ) ) {

        // remove all of them
        WC()->session->__unset( 'wc_notices' );

        // Add one custom one instead
        wc_add_notice( __( 'Please fill in all required fields…', 'woocommerce' ), 'error' );
    }
}

代码进入您的活动子主题(活动主题)的function.php文件中。经过测试,可以正常工作。

enter image description here

相关Set a unique validation error notice in Woocommerce checkout page