WooCommerce Adăugare set de câmpuri personalizate similar câmpurilor de facturare

28 oct. 2013, 12:49:40
Vizualizări: 22.2K
Voturi: 1

Lucrez la funcționalități de e-commerce unde am nevoie să adaug un set de câmpuri personalizate ca și Câmpuri de Profil, similare cu cele de facturare

Mai jos sunt câmpurile necesare în formularul meu de checkout și înregistrare

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

Mă puteți ghida în această problemă cum pot adăuga toate câmpurile de mai sus în tema mea WordPress și ce Acțiuni sau Filtre ar trebui să folosesc pentru a le afișa în formularul de Checkout

Mulțumesc anticipat

Nikhil

0
Toate răspunsurile la întrebare 2
0

Foarte vechi, dar încă apare în căutări, așa că voi menționa că articolul meu Personalizarea câmpurilor de finalizare comandă în WooCommerce aici este un exemplu de adăugare a unui nou câmp la finalizarea comenzii:

// Adaugă un nou câmp la finalizarea comenzii
function kia_filter_checkout_fields($fields){
    $fields['extra_fields'] = array(
            'some_field' => array(
                'type' => 'text',
                'required'      => true,
                'label' => __( 'Un câmp' )
                )
            );

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

// afișează câmpul suplimentar în formularul de finalizare comandă
function kia_extra_checkout_fields(){ 

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

    <div class="extra-fields">
    <h3><?php _e( 'Câmpuri adiționale' ); ?></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' );

// salvează câmpul suplimentar când comanda este procesată
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 );

// afișează datele suplimentare în panoul de administrare al comenzii
function kia_display_order_data_in_admin( $order ){  ?>
    <div class="order_data_column">
        <h4><?php _e( 'Detalii suplimentare', 'woocommerce' ); ?></h4>
        <?php 
            echo '<p><strong>' . __( 'Un câmp' ) . ':</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 nov. 2014 13:29:53
2

Pagina "Personalizarea câmpurilor de checkout folosind acțiuni și filtre" din WooCommerce Codex te poate ajuta.

29 oct. 2013 17:50:45
Comentarii

Răspunsurile ar trebui să fie mai mult decât link-uri...

kaiser kaiser
29 oct. 2013 18:35:53

Salut, am parcurs acel link și am încercat să creez câmpuri, dar mă limitează într-o anumită măsură. Mă gândesc să suprascriu fișierul class-wc-checkout.php cu un fișier personalizat în tema mea, deoarece acest lucru era posibil.

După aceea, pot crea metodele get_default_address_fields și get_address_fields (care erau în class-wc-countries.php) și să folosesc aceste funcții în formularul de Checkout. Din păcate, nu pot suprascrie class-wc-countries.php în tema mea, altminteri totul ar fi fost mult mai ușor.

Spune-mi ce părere ai despre această metodă. Nikhil

Nikhil Joshi Nikhil Joshi
30 oct. 2013 13:56:12