• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Помогите решить квест!

web-master7777

Новичок
Всем привет!
Уффф.
Такое первый раз увидел.
Была задача, чтоб заказ оформлялся без заполнения поля страны и города.
Я их отключил из визуала, и нашёл интересный код, который мне теперь позволяет спокойно оформлять заявку, но теперь появились 2 лишних поля внизу.
В плагинах управления полями естественно этого нет!
Кто знает как их скрыть?
Возможно тут в коде есть что то что их добавляет:
Вот код


// Billing and shipping addresses fields
add_filter( 'woocommerce_default_address_fields' , 'filter_default_address_fields', 20, 1 );
function filter_default_address_fields( $address_fields ) {
// Only on checkout page
if( ! is_checkout() ) return $address_fields;

// All field keys in this array
$key_fields = array('country','first_name','last_name','company','address_1','address_2','city','state','postcode');
// Loop through each address fields (billing and shipping)
foreach( $key_fields as $key_field )
$address_fields[$key_field]['required'] = false;

return $address_fields;
}
 

Вложения

  • 1.jpg
    1.jpg
    89.3 KB · Просмотры: 2

web-master7777

Новичок
Вообще, если тыкнуть в поле лишнее, вроде как оно для почты электронной
 

web-master7777

Новичок
И в догонку, по этой же странице, может кто то сталкивался, почему переименовались поля в платежи
1696957301617.png
 

MacKor

Форумчанин
Я например удалю не нужные поля вот так:
PHP:
/**
 *  Реорганизация полей в WooCommerce Checkout
 */
add_filter('woocommerce_checkout_fields', 'mysite_add_field_and_reorder_fields');

function mysite_add_field_and_reorder_fields($fields) {

    // Удяляем ненужные поля
    unset($fields['billing']['billing_address_2']);
    unset($fields['billing']['billing_company']);
    unset($fields['billing']['billing_postcode']);
    unset($fields['billing']['billing_state']);
    unset($fields['billing']['billing_city']);

    unset($fields['shipping']['shipping_address_2']);
    unset($fields['shipping']['shipping_company']);
    unset($fields['shipping']['shipping_postcode']);
    unset($fields['shipping']['shipping_state']);
    unset($fields['shipping']['shipping_city']);
    unset($fields['shipping']['shipping_country']);

    return $fields;
}
 

web-master7777

Новичок
Я например удалю не нужные поля вот так:
PHP:
/**
*  Реорганизация полей в WooCommerce Checkout
*/
add_filter('woocommerce_checkout_fields', 'mysite_add_field_and_reorder_fields');

function mysite_add_field_and_reorder_fields($fields) {

    // Удяляем ненужные поля
    unset($fields['billing']['billing_address_2']);
    unset($fields['billing']['billing_company']);
    unset($fields['billing']['billing_postcode']);
    unset($fields['billing']['billing_state']);
    unset($fields['billing']['billing_city']);

    unset($fields['shipping']['shipping_address_2']);
    unset($fields['shipping']['shipping_company']);
    unset($fields['shipping']['shipping_postcode']);
    unset($fields['shipping']['shipping_state']);
    unset($fields['shipping']['shipping_city']);
    unset($fields['shipping']['shipping_country']);

    return $fields;
}
Спасибо большое! Прям отлично помогло! Правда не стал рисковать, просто его скопировал и поставил в самый низ, и всё заработало! От Души!))
 

web-master7777

Новичок
А Вы вообще про перевод? Или про лишние поля?
Если про ошибки в чекауте, то обыскался плагин. Видимо надо каким то кодом. Нашёл 1 способ, но не получилось...
function my_custom_error_messages(){
$messages['error'] = 'Платежи Имя является обязательным полем.';
$messages['success'] = 'Заполните поле Имя!';
return $messages;
}
add_filter('woocommerce_add_error', 'my_custom_error_messages');
add_filter('woocommerce_add_success', 'my_custom_error_messages');

В итоге вообще пропал текст из предупреждения
1697020106651.png
 

web-master7777

Новичок
Вообщем решил вопрос и с сообщениями.
Не нашёл как отдельно отредактировать, но смог вместо всех этих сообщений вывести "Заполните все поля, отмеченные звёздочкой". Кривой способ - согласен! Но как быстрое и рабочее решение подойдёт! Всем спасибо! Код ниже

function ShowOneError( $fields, $errors ){

// if their is any validation errors

if( !empty( $errors->get_error_codes() ) ) {

// remove all of Error msg

foreach( $errors->get_error_codes() as $code ) {

$errors->remove( $code );

}

// our custom Error msg

$errors->add('validation','Заполните все поля, отмеченные звёздочкой.');

}

}

add_action('woocommerce_after_checkout_validation','ShowOneError',999,2);
 
Сверху Снизу