Как убрать валидатор в woocommerce?

210
05 января 2022, 09:40

В woocommerce на странице корзины используются эти шорткоды:

[woocommerce_cart] [woocommerce_checkout]
Применяю свой валидатор полей:

add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
    if ( ! $_POST['billing_first_name'] ) {
        wc_add_notice( __( "Заполните поле имя" ), 'error' );
    }
    if ( ! $_POST['billing_last_name'] ) {
        wc_add_notice( __( "Заполните поле фамилия" ), 'error' );
    }
    ...
}

Если поля формы заполнены не все, то ошибка выводится дважды на одно поле: стандартная ошибка и ошибка из приведённого кода.
Как убрать стандартную валидацию?

P.S.
можно было конечно исправить перевод ошибки, но тут вопрос именно в том, как убрать валидацию

Answer 1
add_filter("woocommerce_checkout_fields", "custom_my_fields");
   function custom_my_fields($fields) {
     $fields["billing"]["billing_last_name"]["required"] = false; // Фамилия не обязательна
     $fields["billing"]["billing_phone"]["required"] = true; // Телефон обязателен
return $fields;

//Вот полный перечень стандартных полей WooCommerce:

//Оплата:

$fields["billing"]["billing_first_name"]["required"]
$fields["billing"]["billing_last_name"]["required"]
$fields["billing"]["billing_company"]["required"]
$fields["billing"]["billing_address_1"]["required"]
$fields["billing"]["billing_address_2"]["required"]
$fields["billing"]["billing_city"]["required"]
$fields["billing"]["billing_postcode"]["required"]
$fields["billing"]["billing_country"]["required"]
$fields["billing"]["billing_state"]["required"]
$fields["billing"]["billing_email"]["required"]
$fields["billing"]["billing_phone"]["required"]

//Доставка

$fields["shipping"]["shipping_first_name"]["required"]
$fields["shipping"]["shipping_last_name"]["required"]
$fields["shipping"]["shipping_company"]["required"]
$fields["shipping"]["shipping_address_1"]["required"]
$fields["shipping"]["shipping_address_2"]["required"]
$fields["shipping"]["shipping_city"]["required"]
$fields["shipping"]["shipping_postcode"]["required"]
$fields["shipping"]["shipping_country"]["required"]
$fields["shipping"]["shipping_state"]["required"]

// Заказ

$fields["order"]["order_comments"]["required"]
READ ALSO
Подружить MSSQL и PHP 7+

Подружить MSSQL и PHP 7+

Необходимо поднять проект, написанный на ZendFramework (к делу особо не относится, проект будет переписываться)Используется MSSQL в качестве БД

170
как вывести два поля в гридвью?

как вывести два поля в гридвью?

balance_up и credit_up соответственно тоже в две строкиЕсли изменение больше ноля, тогда добавь к значению +, если меньше - то там и так - (минус) будет

209
Пример стратегии на PHP

Пример стратегии на PHP

Здесь приведён пример стратегии на PHP: https://refactoringguru/ru/design-patterns/strategy/php/example#example-1

154
Почему возникает ошибка "PHP Fatal error: Uncaught Error: Class '...' not found in ..." при загрузке библиотеки через Composer?

Почему возникает ошибка "PHP Fatal error: Uncaught Error: Class '...' not found in ..." при загрузке библиотеки через Composer?

Написал (но и сейчас пишу) библиотеку для работы с APIДля библиотеки создал папку с названием amoNG и туда при разработке поместил все файлы

236