Установите уникальное уведомление об ошибке проверки в Woocommerce My Account Addresses и Account Details

В полях выставления счетов на странице оформления заказа 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 (см. Прикрепленные изображения ниже).

Страница оформления заказа

Установите уникальное уведомление об ошибке проверки в Woocommerce My Account Addresses и Account Details

Моя учетная запись - платежный адрес

Установите уникальное уведомление об ошибке проверки в Woocommerce My Account Addresses и Account Details

Моя учетная запись - данные учетной записи

Установите уникальное уведомление об ошибке проверки в Woocommerce My Account Addresses и Account Details

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
1 480
1
Перейти к ответу Данный вопрос помечен как решенный

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

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

Боже мой. это работает, спасибо большое. Слава тебе @LoicTheAztec

natnat 14.11.2018 03:03

Другие вопросы по теме