Я создаю калькулятор доставки для своего магазина WooCommerce.Мне нужно собрать некоторые дополнительные данные формы от пользователя, чтобы правильно рассчитать доставку.
У меня есть поля формы, добавленные к woocommerce_checkout_after_customer_details
.Возможно, я смогу без проблем доставить это на страницу корзины, как только выясню функциональность страницы оформления заказа, поэтому давайте сосредоточимся на этом.
У меня есть класс, расширяющий WC_Shipping_Method
с помощью метода calculate_shipping
а-ля этот урок .
В этом методе я хочу использовать дополнительные данные формы (плюс пункт назначения) для расчета доставки для этого клиента.Прямо сейчас у меня есть это добавление фиктивной ставки, которая обнаруживается.
Я также создал пользовательский файл cart-shipping.php
, чтобы не отображать какие-либо входные данные для доступного метода в корзине обзора заказов, только метку и стоимость.Так как выбор происходит в моей пользовательской форме, наличие опций здесь не требуется.
- Правильно ли я это делаю, или этот подход супер хакер?
- Если это правильный подход, как мне получить доступ к дополнительным полям формы в методе
calculate_shipping
?
Пробовал
Названы последние параметры в моей пользовательской форме shipping_method_*
, которая запускает вызов wc-ajax=update_order_review
... который входит в мой класс пользовательских методов доставки, но, похоже, никогда не вызывает метод calculate_shipping
.Единственный раз, когда этот метод вызывается, это когда я фактически добавляю товар в заказ.
Также пробовал
Определил все мои возможные варианты доставки и добавил их в Calculate_shipping, как $this->add_rate( $rate );
.Я думаю, тогда я могу как-то выбрать один (заставить пользователя в один), когда корзина обновляется через update_order_review
AJAX вызова?Опять же, опция set должна определяться этими полями, с которыми пользователь взаимодействует в форме оформления заказа.Но я еще не понял, как настроить доставку на это действие.