如果必填字段为空,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 字段中提供一致的错误通知(请参阅下面的附图)。
结账页面
我的帐户 - 帐单地址
我的帐户 - 帐户详细信息
最佳答案
要将所有字段验证错误替换为帐户账单和送货地址以及帐户详细信息中的唯一自定义错误,您将使用以下 Hook 函数,该函数使用两个验证 Hook :
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
关于php - 在 Woocommerce 我的帐户地址和帐户详细信息中设置唯一的验证错误通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53279751/