WooCommerce: Добавление пользовательских полей как поля для выставления счета
Я работаю над функциями электронной коммерции, где мне нужно добавить набор пользовательских полей в качестве полей профиля, аналогичных полям для выставления счета
Ниже приведены поля, которые необходимы в моей форме оформления заказа и регистрации
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 мне следует использовать для отображения в форме оформления заказа
Заранее спасибо
Никхил

Очень старый пост, но он до сих пор появляется в результатах поиска, поэтому я добавлю, что в моей статье Настройка полей оформления заказа в 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' );

Страница "Настройка полей оформления заказа с помощью действий и фильтров в WooCommerce Codex может вам помочь.

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