Задать вопрос

Почему не проходит заказ на woocommerce, и просит ввести адрес для продолжения?

Всех приветствую!
Магазин на woocommerce. Движок WP последней версии. На сайте установлена Настройки Saphali WC. Пробовал устанвливать WooCommerce Checkout Manager для сокращения полей при оформлении заказа, поля ненужные убирал или не выводил, даже пробовал убирать все галочки объязательных полей, но проблема при оформлении заказа возникает на Mozille. В режиме инкогнито в Mozille исчезает.
Пробуя вводить все поля, и эксперементируя с разными сочетаниями обьязательных и необъязательных полей к стабильной работе так и не привели. Часто выдает ошибку "Пожалуйста, введите адрес для продолжения."
пробовал устанавливать в funcional.php темы шаблона следующий код
<?php

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

function custom_override_checkout_fields( $fields ) {

unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_company']);

unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);

unset($fields['order']['order_comments']);
unset($fields['billing']['billing_email']);
unset($fields['account']['account_username']);
unset($fields['account']['account_password']);
unset($fields['account']['account_password-2']);
return $fields;
}

?>
после чего благополучно сайт переставал вообще работать, и приходилось делать бекап.
Зубры программирования и знатоки WP и Wocommerce - откликнитесь.
Готов оплатить за дельный помогающий совет небольшую сумму. 500 руб.
сайт www.azia-mix.ru/shop
  • Вопрос задан
  • 24634 просмотра
Подписаться 6 Сложный 2 комментария
Пригласить эксперта
Ответы на вопрос 12
@balaknegor
А вот так это делается руками.
в functions.php пишем:

add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
  
function custom_override_checkout_fields( $fields ) {
  unset($fields['billing']['billing_country']);  //удаляем! тут хранится значение страны оплаты
  unset($fields['shipping']['shipping_country']); ////удаляем! тут хранится значение страны доставки
 
  return $fields;
}
Ответ написан
@losttheory
У меня такое было если выключить поле со страной (['billing']['billing_country']). Как только я его вернул в форму, все заработало.
Ответ написан
Vagrant0610
@Vagrant0610
PHP разработчик
Указанные выше решения сработали 1 раз (лично у меня).
По этому я решил проблему так:
1. Создаёте в стилях класс:
.vag-hide { display: none; }
2. Добавляем класс к полю "Страна":
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields )
{
	array_push($fields['billing']['billing_country']['class'], "vag-hide"); // Добавляем класс для скрытия поля.
	return $fields;
}
Ответ написан
Комментировать
@Chaly95
Там нельзя убирать поле страна
(оно должно быть опубликовано)
woocommerce -> Saphali WC -> Управление полями -> Страна (Должно быть опубликовано)
Ответ написан
Mickuz
@Mickuz
wordpress разработчик
Попробуйте также отключать поля для доставки ['shiping']
// remove shipping fields
unset($fields['shipping']['shipping_first_name']);
unset($fields['shipping']['shipping_last_name']);
unset($fields['shipping']['shipping_company']);
unset($fields['shipping']['shipping_address_1']);
unset($fields['shipping']['shipping_address_2']);
unset($fields['shipping']['shipping_city']);
unset($fields['shipping']['shipping_postcode']);
unset($fields['shipping']['shipping_country']);
unset($fields['shipping']['shipping_state']);
Ответ написан
@Melton
Чтобы исправить ошибку нужно чтобы передавалось поле страны доставки\или страны платёжного адреса. Простое удаление полей страны в хуке woocommerce_checkout_fields не поможет(в последних версия woocommerce), т.к. эта ошибка выдаётся не на этапе проверок конкретного поля, а валидации checkout в целом(если включены методы доставки, то страна доставки не может быть пустой). Можно как предложил комментатор выше, просто скрыть поле страны через css, а можно убрать поле программно и устанавливать значение страны вручную. Так или иначе, всё это грязные хаки.

// Программно устанавливаем страну
function carrie_customer_default_shipping_country($value, $customer) {
    $value = !empty($value) ? $value : 'RU';
    return $value;
}
add_filter('woocommerce_customer_get_shipping_country', 'carrie_customer_default_shipping_country', 10, 2);

// убираем поле страны из формы
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); 
function custom_override_checkout_fields( $fields ) {
  unset($fields['billing']['billing_country']); // Отключаем страны оплаты
  unset($fields['shipping']['shipping_country']);// Отключаем страны доставки
  return $fields;
}
Ответ написан
@IvanZhukov
plugin-wp.ru - премиум плагины для Wordpress
Что помогло:

1. Выставляем настройки как на скриншоте 1. WooCommerce -> Настройки -> Основные. К слову сказать это настройки для WooCommerce 6.8.2
2. Добавляем товар на сайте в корзину и переходим на checkout. Убеждаемся что у нас выставлена страна в поле без возможности выбрать другую страну. См. скриншот 2.
3. После чего скрываем это поле хоть через вебхуки, хоть через Saphali WC. И все работает.

63172f92bf852646343935.png

63172fa7027b2587480104.png
Ответ написан
Комментировать
@ArtemArtemenko
Мне при такой ошибке помогло удаление классов в Woocommerce\Доставка\Классы доставки
Ответ написан
Комментировать
maxxannik
@maxxannik
Сайты на WordPress + Интернет магазины WooCommerce
Значит что какое то из полей содержит require = true. сделайте var_dump($fields); и увидите какое.
Далее либо его надо убрать через unset, либо сделать require = false.
Ответ написан
Комментировать
@0962560608tsv
Зайдите в /WooCommerce/ Checkout Fоrms/Rest to deaful filter/
Ответ написан
Комментировать
NeoleX
@NeoleX
Мне помог код, который надо вставить в в конце файла ваш_сайт\wp-content\themes\ваша_тема\functions.php: перед endif;

// Отключаем ненужные поля ввода при заказе
add_filter('woocommerce_checkout_fields','remove_checkout_fields');
function remove_checkout_fields($fields){
    //unset($fields['billing']['billing_first_name']); 
    //unset($fields['billing']['billing_last_name']);
    unset($fields['billing']['billing_company']); // Отключено
    //unset($fields['billing']['billing_address_1']);
    unset($fields['billing']['billing_address_2']); // Отключено
    unset($fields['billing']['billing_city']); // Отключено
    unset($fields['billing']['billing_postcode']); // Отключено
    unset($fields['billing']['billing_country']); // Отключено
    unset($fields['billing']['billing_state']); // Отключено
    //unset($fields['billing']['billing_phone']);
    //unset($fields['order']['order_comments']);
    //unset($fields['billing']['billing_email']);
    unset($fields['account']['account_username']); // Отключено
    unset($fields['account']['account_password']); // Отключено
    unset($fields['account']['account_password-2']); // Отключено
    return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); 
function custom_override_checkout_fields( $fields ) {
  unset($fields['billing']['billing_country']); // Отключаем страны оплаты
  unset($fields['shipping']['shipping_country']);// Отключаем страны доставки
  return $fields;
}


Тогда у меня ошибка "Пожалуйста, введите адрес для продолжения." пропала и заказ принимается!
Ответ написан
Комментировать
zimnenkoofficial
@zimnenkoofficial
Интернет-маркетолог
Привет всем.
Я столкнулся с примерно аналогичной проблемой:
При оформлении заказа вылазила ошибка и хоть кол на голове теши. Чего только не перепробовал.
В WooComerce много лишних полей, я про страницу заказа.
Необходимо было использовать только: Имя, Mail, Телефон, поэтому там стоял плагин - Checkout Field Editor for WooCommerce. В конечном счете, проблема оказалась в том, что отправке заказов мешал вот этот плагин - Post SMTP. Они конфликтовали с предыдущим. После его отключения все прекрасно заработало.
Надеюсь, информация будет полезной. Всем бобра :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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