WooCommerce: Добавление пользовательских полей как поля для выставления счета

28 окт. 2013 г., 12:49:40
Просмотры: 22.2K
Голосов: 1

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

Ниже приведены поля, которые необходимы в моей форме оформления заказа и регистрации

profile_first_name
profile_last_name
profile_company
profile_address_1
profile_address_2
profile_city
profile_postcode
profile_country
profile_state
profile_email
profile_phone

Пожалуйста, подскажите, как я могу добавить все вышеперечисленные поля в мою тему WordPress и какие Actions или Filters мне следует использовать для отображения в форме оформления заказа

Заранее спасибо

Никхил

0
Все ответы на вопрос 2
0

Очень старый пост, но он до сих пор появляется в результатах поиска, поэтому я добавлю, что в моей статье Настройка полей оформления заказа в WooCommerce есть пример добавления нового поля на странице оформления заказа:

// Добавляем новое поле на странице оформления заказа
function kia_filter_checkout_fields($fields){
    $fields['extra_fields'] = array(
            'some_field' => array(
                'type' => 'text',
                'required'      => true,
                'label' => __( 'Новое поле' )
                )
            );

    return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'kia_filter_checkout_fields' );

// Отображаем дополнительное поле в форме оформления заказа
function kia_extra_checkout_fields(){ 

    $checkout = WC()->checkout(); ?>

    <div class="extra-fields">
    <h3><?php _e( 'Дополнительные поля' ); ?></h3>

    <?php foreach ( $checkout->checkout_fields['extra_fields'] as $key => $field ) : ?>

            <?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>

        <?php endforeach; ?>
    </div>

<?php }
add_action( 'woocommerce_checkout_after_customer_details' ,'kia_extra_checkout_fields' );

// Сохраняем дополнительное поле при обработке заказа
function kia_save_extra_checkout_fields( $order_id, $posted ){
    if( isset( $posted['some_field'] ) ) {
        update_post_meta( $order_id, '_some_field', sanitize_text_field( $posted['some_field'] ) );
    }
}
add_action( 'woocommerce_checkout_update_order_meta', 'kia_save_extra_checkout_fields', 10, 2 );

// Отображаем дополнительные данные в админ-панели заказа
function kia_display_order_data_in_admin( $order ){  ?>
    <div class="order_data_column">
        <h4><?php _e( 'Дополнительные данные', 'woocommerce' ); ?></h4>
        <?php 
            echo '<p><strong>' . __( 'Новое поле' ) . ':</strong>' . get_post_meta( $order->id, '_some_field', true ) . '</p>'; ?>
    </div>
<?php }
add_action( 'woocommerce_admin_order_data_after_order_details', 'kia_display_order_data_in_admin' );
7 нояб. 2014 г. 13:29:53
2
29 окт. 2013 г. 17:50:45
Комментарии

Ответы должны быть более содержательными, чем просто ссылки...

kaiser kaiser
29 окт. 2013 г. 18:35:53

Привет, я изучил эту ссылку и попытался создать поля, но это ограничивает меня в некоторой степени. Я думаю переопределить class-wc-checkout.php своим кастомным файлом в теме, так как это возможно.

После этого я смогу создать методы get_default_address_fields и get_address_fields (которые находятся в class-wc-countries.php) и использовать эти функции в форме оформления заказа. К сожалению, я не могу переопределить class-wc-countries.php в своей теме, иначе всё было бы легко сделать.

Поделитесь вашим мнением об этом методе. Нихил

Nikhil Joshi Nikhil Joshi
30 окт. 2013 г. 13:56:12