В полях выставления счетов на странице оформления заказа 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 My Account - платежный адрес, а также в My Account - вкладка данных учетной записи. Моя единственная цель этих изменений - обеспечить постоянное уведомление об ошибке во всех полях Woocommerce (см. Прикрепленные изображения ниже).
Страница оформления заказа
Моя учетная запись - платежный адрес
Моя учетная запись - данные учетной записи






Чтобы заменить все ошибки проверки полей уникальными пользовательскими ошибками из адреса выставления счетов и доставки, а также сведений об учетной записи, вы будете использовать следующую подключенную функцию, которая использует два крючка проверки:
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 вашей активной дочерней темы (активной темы). Проверено и работает.
Связанный:Установите уникальное уведомление об ошибке проверки на странице оформления заказа Woocommerce
Боже мой. это работает, спасибо большое. Слава тебе @LoicTheAztec