Установите уникальное уведомление об ошибке проверки в Woocommerce My Account Адреса и данные учетной записи - PullRequest
0 голосов
/ 13 ноября 2018

Поля выставления счетов на странице оформления заказа в 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 голосов
/ 13 ноября 2018

Чтобы заменить все ошибки проверки полей уникальным пользовательским из «Учетная запись и адрес доставки», а также сведения об учетной записи, вы будете использовать следующую перехваченную функцию, которая использует два перехватчика проверки:

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 вашей активной дочерней темы (active theme).Протестировано и работает.

enter image description here

Связано: Установка уникального уведомления об ошибке проверки на странице оформления заказа в Woocommerce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...