Я пытался сделать номер телефона для выставления счетов обязательным компонентом, но никак на него не смог повлиять. Вот что я пробовал до сих пор
использование хуков в 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» установить на телефоне необходимые настройки.
но, несмотря на все это, телефон для выставления счетов по-прежнему не является обязательным, и я могу оформить заказ, не добавляя номер телефона. Есть ли что-то, что мне не хватает?
Кажется, это может сработать, но также дает совершенно другую страницу оформления заказа. Я надеюсь, что смогу сохранить имеющуюся у меня страницу оформления заказа.
В конце концов я смог найти решение. Следующий файл определяет объект для поля биллинга 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,
Теперь все работает так, как ожидалось!
Ух ты, я никогда не мог об этом догадаться. Спасибо! Итак, если я правильно понимаю, это какие-то правила, которые переопределяют все другие методы, которые я использовал, чтобы установить это поле как обязательное.
Это связано с тем, что вы используете блокировку оформления заказа, которая не позволяет вносить изменения, как раньше. Вы ограничены доступными опциями из этих подблоков при редактировании страницы оформления заказа через серверную часть. Вы можете переключиться на классическую оформление заказа, как описано здесь, чтобы иметь возможность настроить оформление заказа по своему усмотрению.