В последних версиях Woocommerce при оформлении и управлении полями стала выскакивать ошибка, что заказ невозможно оформить и для этого необходимо ввести адрес. Хотя поле адреса есть. Решается вставкой кода в function.php
Чтобы исправить ошибку нужно чтобы передавалось поле страны доставкиили страны платёжного адреса. Простое удаление полей страны в хуке woocommerce_checkout_fields не поможет(в последних версия woocommerce), т.к. эта ошибка выдаётся не на этапе проверок конкретного поля, а валидации checkout в целом(если включены методы доставки, то страна доставки не может быть пустой). Можно как предложил комментатор выше, просто скрыть поле страны через css, а можно убрать поле программно и устанавливать значение страны вручную.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span class="hljs-comment">// Программно устанавливаем страну</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">carrie_customer_default_shipping_country</span><span class="hljs-params">($value, $customer)</span> </span>{ $value = !<span class="hljs-keyword">empty</span>($value) ? $value : <span class="hljs-string">'RU'</span>; <span class="hljs-keyword">return</span> $value; } add_filter(<span class="hljs-string">'woocommerce_customer_get_shipping_country'</span>, <span class="hljs-string">'carrie_customer_default_shipping_country'</span>, <span class="hljs-number">10</span>, <span class="hljs-number">2</span>); <span class="hljs-comment">// убираем поле страны из формы</span> add_filter( <span class="hljs-string">'woocommerce_checkout_fields'</span> , <span class="hljs-string">'custom_override_checkout_fields'</span> ); <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">custom_override_checkout_fields</span><span class="hljs-params">( $fields )</span> </span>{ <span class="hljs-keyword">unset</span>($fields[<span class="hljs-string">'billing'</span>][<span class="hljs-string">'billing_country'</span>]); <span class="hljs-comment">// Отключаем страны оплаты</span> <span class="hljs-keyword">unset</span>($fields[<span class="hljs-string">'shipping'</span>][<span class="hljs-string">'shipping_country'</span>]);<span class="hljs-comment">// Отключаем страны доставки</span> <span class="hljs-keyword">return</span> $fields; } |