Удалите стандартные классы CSS для упаковщиков полей оформления заказа в Woocommerce - PullRequest
0 голосов
/ 28 августа 2018

Я создаю сайт электронной коммерции на основе Wordpress и Woocommerce. Пока что все идет хорошо, но на последней странице проверки (биллинг и доставка) стандартные классы Woocommerce мешают разметке Bootstrap 4.

Каждое поле в форме выставления счета обернуто тегом

, содержащим хотя бы строку формы класса (т.е.):

class="form-row form-row-first"

Это приводит к «падению» форм стандартной сетки BS.

Кто-нибудь знает, как удалить эти классы-оболочки?

Спасибо большое,

Cheers, Nicky

1 Ответ

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

Чтобы очистить class="form-row form-row-first" из контейнера полей тега <p>, следующий код выполнит работу с полями извлечения:

add_filter('woocommerce_form_field_country', 'clean_checkout_fields_class_attribute_values', 20, 4);
add_filter('woocommerce_form_field_state', 'clean_checkout_fields_class_attribute_values', 20, 4);
add_filter('woocommerce_form_field_textarea', 'clean_checkout_fields_class_attribute_values', 20, 4);
add_filter('woocommerce_form_field_checkbox', 'clean_checkout_fields_class_attribute_values', 20, 4);
add_filter('woocommerce_form_field_password', 'clean_checkout_fields_class_attribute_values', 20, 4);
add_filter('woocommerce_form_field_text', 'clean_checkout_fields_class_attribute_values', 20, 4);
add_filter('woocommerce_form_field_email', 'clean_checkout_fields_class_attribute_values', 20, 4);
add_filter('woocommerce_form_field_tel', 'clean_checkout_fields_class_attribute_values', 20, 4);
add_filter('woocommerce_form_field_number', 'clean_checkout_fields_class_attribute_values', 20, 4);
add_filter('woocommerce_form_field_select', 'clean_checkout_fields_class_attribute_values', 20, 4);
add_filter('woocommerce_form_field_radio', 'clean_checkout_fields_class_attribute_values', 20, 4);
function clean_checkout_fields_class_attribute_values( $field, $key, $args, $value ){
    if( is_checkout() ){
        // remove "form-row"
        $field = str_replace( array('<p class="form-row ', '<p class="form-row'), array('<p class="', '<p class="'), $field);
    }

    return $field;
}

add_filter('woocommerce_checkout_fields', 'custom_checkout_fields_class_attribute_value', 20, 1);
function custom_checkout_fields_class_attribute_value( $fields ){
    foreach( $fields as $fields_group_key => $group_fields_values ){
        foreach( $group_fields_values as $field_key => $field ){
            // Remove other classes (or set yours)
            $fields[$fields_group_key][$field_key]['class'] = array(); 
        }
    }

    return $fields;
}

Код помещается в файл function.php активной дочерней темы (или активной темы). Проверено и работает.

...