Woocommerce Невозможно установить телефон для выставления счетов как «обязательный»

Я пытался сделать номер телефона для выставления счетов обязательным компонентом, но никак на него не смог повлиять. Вот что я пробовал до сих пор

использование хуков в function.php

add_filter('woocommerce_billing_fields', 'no_billing_phone_validation' );
function no_billing_phone_validation( $fields ) {
    $fields['billing_phone']['required'] = true;
    return $fields;
}

Установка телефона на обязательный в моей теме

и с помощью плагина «Редактор полей оформления заказа для WooCommerce» установить на телефоне необходимые настройки.

но, несмотря на все это, телефон для выставления счетов по-прежнему не является обязательным, и я могу оформить заказ, не добавляя номер телефона. Есть ли что-то, что мне не хватает?

Это связано с тем, что вы используете блокировку оформления заказа, которая не позволяет вносить изменения, как раньше. Вы ограничены доступными опциями из этих подблоков при редактировании страницы оформления заказа через серверную часть. Вы можете переключиться на классическую оформление заказа, как описано здесь, чтобы иметь возможность настроить оформление заказа по своему усмотрению.

LoicTheAztec 03.04.2024 22:49

Кажется, это может сработать, но также дает совершенно другую страницу оформления заказа. Я надеюсь, что смогу сохранить имеющуюся у меня страницу оформления заказа.

jon P 05.04.2024 06:30
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
0
2
374
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В конце концов я смог найти решение. Следующий файл определяет объект для поля биллинга woocommerce/src/blocks/domains/services/checkoutfields.php. Этот файл имел следующий объект

        'phone'      => array(
            'label'          => __( 'Phone', 'woocommerce' ),
            'optionalLabel'  => __(
                'Phone (optional)',
                'woocommerce'
            ),
            'required'       => true,
            'hidden'         => false,
            'type'           => 'tel',
            'autocomplete'   => 'tel',
            'autocapitalize' => 'characters',
            'index'          => 100,
        ),

Как ни странно, если я установил для обязательного значение true, это на самом деле НЕ сделало поле обязательным. Должна быть какая-то функция, переопределяющая это где-то еще. Итак, я удалил объект телефона и создал идентичный объект phone2. Это можно было установить на необходимое

Ответ принят как подходящий

Я изменил код в файле wp-content/plugins/woocommerce/assets/client/blocks/checkout-frontend.js, изменив

"showPhoneField":{"type":"boolean","default":true},"requirePhoneField":{"type":"boolean","default":true},

и

showPhoneField: 1,requireCompanyField: !1,requirePhoneField: 1,

Теперь все работает так, как ожидалось!

Ух ты, я никогда не мог об этом догадаться. Спасибо! Итак, если я правильно понимаю, это какие-то правила, которые переопределяют все другие методы, которые я использовал, чтобы установить это поле как обязательное.

jon P 30.04.2024 17:37

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

Похожие вопросы