Añadir conjunto de campos personalizados como campos de facturación en WooCommerce
Estoy trabajando en funciones de comercio electrónico donde necesito agregar un conjunto de campos personalizados como Campos de Perfil que sean similares a los campos de facturación
A continuación están los campos que necesito en mi formulario de pago y registro
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
¿Podrían guiarme sobre cómo puedo agregar todos los campos anteriores en mi tema de WordPress y qué Acciones o Filtros debería usar para mostrarlos en el formulario de pago?
Gracias de antemano
Nikhil

Muy antiguo, pero todavía aparece en las búsquedas, así que añadiré que mi artículo Personalizar Campos de Pago en WooCommerce aquí hay un ejemplo de cómo añadir un nuevo campo en el checkout:
// Añadir un nuevo campo en el checkout
function kia_filter_checkout_fields($fields){
$fields['extra_fields'] = array(
'some_field' => array(
'type' => 'text',
'required' => true,
'label' => __( 'Algún campo' )
)
);
return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'kia_filter_checkout_fields' );
// mostrar el campo adicional en el formulario de checkout
function kia_extra_checkout_fields(){
$checkout = WC()->checkout(); ?>
<div class="extra-fields">
<h3><?php _e( 'Campos Adicionales' ); ?></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' );
// guardar el campo adicional cuando se procesa el checkout
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 );
// mostrar los datos adicionales en el panel de administración de pedidos
function kia_display_order_data_in_admin( $order ){ ?>
<div class="order_data_column">
<h4><?php _e( 'Detalles Adicionales', 'woocommerce' ); ?></h4>
<?php
echo '<p><strong>' . __( 'Algún campo' ) . ':</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' );

La página "Personalización de campos de pago usando acciones y filtros" en el Codex de WooCommerce podría ayudarte.

HOLA, he revisado ese enlace e intenté crear campos pero me limita en cierta medida. Estoy pensando en sobrescribir el archivo class-wc-checkout.php con mi archivo personalizado en el tema, ya que esto era posible.
Después de eso, puedo crear los métodos get_default_address_fields y get_address_fields (que estaban en class-wc-countries.php) y usar estas funciones en el formulario de Checkout. Lamentablemente no puedo sobrescribir el class-wc-countries.php en mi tema, de lo contrario todo habría sido más fácil de realizar.
Házme saber tu opinión sobre este método Nikhil
