如果必填字段为空,则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字段中均具有一致的错误通知(请参见下面的图片)。
结帐页面
我的帐户-帐单邮寄地址
我的帐户-帐户详细信息
答案 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文件中。经过测试,可以正常工作。
相关:Set a unique validation error notice in Woocommerce checkout page