В полях оформления заказа есть 2 столбца на странице корзины Woocommerce - PullRequest
0 голосов
/ 26 августа 2018

Я нашел решение, чтобы следующие поля находились в соответствии друг с другом на странице оформления заказа в woocommerce - оригинальный вопрос здесь: Настройка полей оформления заказа в 2 столбцах на странице корзины Woocommerce

Большинство полей с этим кодом становятся встроенными, однако следующие поля не влияют:

  • Телефон
  • Электронная почта
  • Адресная строка 2

Я думаю, что это ошибка в разделе биллинга в коде.Это полный код:

add_filter( 'woocommerce_checkout_fields' , 'custom_checkout_billing_fields', 20, 1 );
function custom_checkout_billing_fields( $fields ){

if( is_cart()){ // <== On cart page only
    // Change placeholder
    $fields['billing_phone']['placeholder']     = __( 'Phone', $domain );
    $fields['billing_email']['placeholder']     = __( 'Email', $domain );
    $fields['billing_address_2']['placeholder'] = __( 'Address line 2', $domain );

    // Change class
    $fields['billing_phone']['class']     = array('form-row-last'); //  50%
    $fields['billing_email']['class']     = array('form-row-first');  //  50%
    $fields['billing_address_2']['class'] = array('form-row-wide');  // 100%
}
return $fields;
}

add_filter('woocommerce_default_address_fields', 'custom_default_address_fields', 20, 1);
function custom_default_address_fields( $address_fields ){

if( ! is_cart()){ // <== On cart page only
    // Change placeholder
    $address_fields['first_name']['placeholder'] = __( 'First name', $domain );
    $address_fields['last_name']['placeholder']  = __( 'Last name', $domain );
    $address_fields['address_1']['placeholder']  = __( 'Address line 1', $domain );
    $address_fields['state']['placeholder']      = __( 'County', $domain );
    $address_fields['postcode']['placeholder']   = __( 'Post Code', $domain );
    $address_fields['city']['placeholder']       = __( 'Town/City', $domain );

    // Change class
    $address_fields['first_name']['class'] = array('form-row-first'); //  50%
    $address_fields['last_name']['class']  = array('form-row-last');  //  50%
    $address_fields['address_1']['class']  = array('form-row-wide');  // 100%
    $address_fields['state']['class']      = array('form-row-last');  // 50%
    $address_fields['postcode']['class']   = array('form-row-first'); //  50%
    $address_fields['city']['class']       = array('form-row-first');  //  50%
}
return $address_fields;
}

Вот код CSS:

.form-row-wide,
.form-row-first,
.form-row-last {
    clear: both !important;
    float: none !important;
    width: 100% !important;
    margin-right: 0 !important;
}

@media (min-width: 768px){
    .form-row-first {
       width: 47% !important;
       float: left !important;
       margin-right: 5.8% !important;
       clear: both !important;
    }
    .form-row-last {
       width: 47% !important;
       float: right !important;
       margin-right: 0 !important;
       clear: none !important;
    }
}

1 Ответ

0 голосов
/ 26 августа 2018

в вашем коде есть какая-то ошибка, и я считаю, что ответ, из которого вы взяли этот код, предназначен для аналогичного решения, а не для вашего случая.

Таким образом, если вы хотите вывести оформленную заявку в строке, вам нужно только следующее:

 add_filter('woocommerce_checkout_fields', 'custom_checkout_billing_fields', 20, 1);
 function custom_checkout_billing_fields($fields)
 {
$domain = 'woocommerce';
// Remove billing address 2
unset($fields['billing']['billing_address_2']);

// Change class
$fields['billing']['billing_phone']['class'] = array('form-row-first'); //  50%
$fields['billing']['billing_email']['class'] = array('form-row-last'); //  50%
$fields['billing']['billing_address_1']['class'] = array('form-row-first'); //  50%
$fields['billing']['billing_postcode']['class'] = array('form-row-last'); //  50%
$fields['billing']['billing_company']['class'] = array('form-row-wide'); // 100%

// Change placeholder this below is just if you wanto to change the place holder  you can remove theme if you don't want to change that
$fields['billing']['billing_phone']['placeholder'] = __('Telefon', $domain);
$fields['billing']['billing_email']['placeholder'] = __('Email', $domain);
$fields['billing']['billing_company']['placeholder'] = __('Firmanavn', $domain);

return $fields;
}

в приведенном выше коде только пять полей, которые мы изменили классы, если вы хотите, чтобы остальные сообщили мне, или вы можете добавить их самостоятельно, ища каждое имя поля и изменив класс так, как вы хотите

Помните, что в этой функции есть блок кода, который меняет местозаполнитель, если вы не хотите их использовать, вы можете просто удалить их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...