Cum se adaugă un câmp personalizat de plată la e-mailul WooCommerce

Publicat: 2020-12-17

Adăugați un câmp personalizat de plată la e-mailul WooCommerce Doriți să adăugați un câmp personalizat de plată la e-mail în magazinul dvs. WooCommerce?

WooCommerce este un plugin puternic de comerț electronic pentru WordPress, care este flexibil la personalizare.

În această postare, veți vedea cum puteți personaliza în mod dinamic câmpuri suplimentare, cum ar fi eliminarea adresei de facturare, adăugarea/editarea câmpurilor personalizate de plată și salvarea acestor câmpuri personalizate în baza de date. În plus, vă voi arăta cum puteți adăuga aceste câmpuri personalizate pentru a comanda e-mailuri.

Eliminați informații suplimentare din câmpurile personalizate de plată

Primul pas este să adăugați un fragment de cod PHP personalizat în fișierul function.php al temei pentru a elimina câmpurile de adresă din ecranul de facturare:

 funcția woocommerce_remove_additional_information_checkout($fields){

    unset( $fields["billing_first_name"] );

    unset( $fields["nume_facturare"] );

    returnează $câmpuri;

}

add_filter( 'woocommerce_billing_fields', 'woocommerce_remove_additional_information_checkout');

Acesta este rezultatul: eliminați câmpurile de adresă din ecranul de facturare

Următoarele fragmente de cod vor adăuga un câmp personalizat la pagina de finalizare a comenzii, vor salva datele în meta-comandă și vor afișa meta-comandă în administratorul comenzilor. Am primit mai multe întrebări despre procesul de adăugare a mai multor câmpuri. Pentru a ajuta la rezolvarea problemei, vom adăuga un fragment de cod pentru a adăuga două câmpuri.

Adăugați un câmp personalizat de plată la e-mailul WooCommerce

Fragmentele de cod ar trebui adăugate în fișierul functions.php al temei. Vă recomand să utilizați o temă copil, astfel încât modificările dvs. să nu se piardă în timpul unui upgrade.

1. Adăugați câmp personalizat de plată WooCommerce

Adăugați următorul cod în fișierul functions.php pentru a adăuga un câmp personalizat de plată WooCommerce:

 funcția njengah_custom_checkout_fields($fields){

$fields['njengah_extra_fields'] = matrice(

'njengah_text_field' => matrice(

'type' => 'text',

„necesar” => adevărat,

'label' => __( 'Câmp text de introducere' )

),

'njengah_dropdown' => matrice(

'type' => 'selectați',

'options' => array( 'first' => __( 'Prima opţiune' ), 'second' => __( 'A doua opţiune' ), 'third' => __( 'A treia opţiune' ) ),

„necesar” => adevărat,

'label' => __( 'Câmp derulant' )

)

);

returnează $câmpuri;

}

add_filter('woocommerce_checkout_fields', 'njengah_custom_checkout_fields');

funcția njengah_extra_checkout_fields(){

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

<div class="extra-fields">

<h3><?php _e('Câmpuri suplimentare'); ?></h3>

<?php

foreach ( $checkout->checkout_fields['njengah_extra_fields'] ca $key => $field ) : ?>

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

<?php endforeach; ?>

</div>

<?php }

add_action( 'woocommerce_checkout_after_customer_details' ,'njengah_extra_checkout_fields' );

Acesta este rezultatul: secțiunea câmpuri suplimentare

2. Salvați datele câmpurilor personalizate de checkout WooCommerce

Adăugați următorul cod în fișierul functions.php pentru a salva datele câmpurilor personalizate de checkout WooCommerce.

 funcția njengah_save_extra_checkout_fields( $comanda_id, $postat ){

// nu uitați igienizarea corespunzătoare dacă utilizați un alt tip de câmp

if( isset( $posted['njengah_text_field'] ) ) {

update_post_meta( $comanda_id, '_njengah_text_field', sanitize_text_field( $posted['njengah_text_field'] ) );

}

if( isset( $posted['njengah_dropdown'] ) && in_array( $posted['njengah_dropdown'], array( 'primul', 'al doilea', 'al treilea' ) ) ) {

update_post_meta( $order_id, '_njengah_dropdown', $posted['njengah_dropdown'] );

}

}

add_action( 'woocommerce_checkout_update_order_meta', 'njengah_save_extra_checkout_fields', 10, 2 );

3. Afișează utilizatorului datele câmpurilor personalizate WooCommerce

Adăugați următorul cod în fișierul functions.php pentru a afișa utilizatorului datele câmpurilor personalizate WooCommerce.

 funcția njengah_display_order_data( $order_id ){ ?>

<h2><?php _e('Informații suplimentare'); ?></h2>

<table class="shop_table shop_table_responsive additional_info">

<tbody>

<tr>

<th><?php _e( 'Câmp text de introducere:' ); ?></th>

<td><?php echo get_post_meta( $order_id, '_njengah_text_field', true ); ?></td>

</tr>

<tr>

<th><?php _e( 'Câmp drop-down:' ); ?></th>

<td><?php echo get_post_meta( $order_id, '_njengah_dropdown', true ); ?></td>

</tr>

</tbody>

</tabel>

<?php }

add_action( 'woocommerce_thankyou', 'njengah_display_order_data', 20 );

add_action( 'woocommerce_view_order', 'njengah_display_order_data', 20 );

Acesta este rezultatul: Informații suplimentare

4. Afișați câmpurile de comandă personalizate pentru administratorul WooCommerce

Acest fragment de cod va funcționa ca date privind adresa de expediere și de facturare și va dezvălui intrările atunci când utilizatorul face clic pe pictograma creion.

 funcția njengah_display_order_data_in_admin( $order ){ ?>

<div class="order_data_column">

<h4><?php _e( „Informații suplimentare”, „woocommerce”); ?><a href="#" class="edit_address"><?php _e( 'Edit', 'woocommerce' ); ?></a></h4>

<div class="adresa">

<?php

ecou „<p><strong>” . __( „Câmp de text”) . ':</strong>' . get_post_meta( $order->id, '_njengah_text_field', true ) . „</p>”;

ecou „<p><strong>” . __( 'Scapă jos' ) . ':</strong>' . get_post_meta( $order->id, '_njengah_dropdown', true ) . „</p>”; ?>

</div>

<div class="edit_address">

<?php woocommerce_wp_text_input( array( 'id' => '_njengah_text_field', 'label' => __( 'Unele câmpuri' ), 'wrapper_class' => '_billing_company_field' ) ); ?>

<?php woocommerce_wp_text_input( array( 'id' => '_njengah_dropdown', 'label' => __( 'Another field' ), 'wrapper_class' => '_billing_company_field' ) ); ?>

</div>

</div>

<?php }

add_action( 'woocommerce_admin_order_data_after_order_details', 'njengah_display_order_data_in_admin');




funcția njengah_save_extra_details( $post_id, $post ){

update_post_meta( $post_id, '_njengah_text_field', wc_clean( $_POST[ '_njengah_text_field' ] ) );

update_post_meta( $post_id, '_njengah_dropdown', wc_clean( $_POST[ '_njengah_dropdown' ] ) );

}

add_action( 'woocommerce_process_shop_order_meta', 'njengah_save_extra_details', 45, 2 );

Acesta este rezultatul: editați informații suplimentare

5. Adăugați câmpuri personalizate WooCommerce la e-mailurile de comandă

Adăugați următorul cod în fișierul functions.php pentru a adăuga câmpuri personalizate WooCommerce pentru a comanda e-mailuri. Dacă doriți să personalizați rezultatul în e-mailuri, puteți adăuga ceva text la oricare dintre cârligele disponibile în șabloanele de e-mail.

 funcția njengah_email_order_meta_fields( $fields, $sent_to_admin, $order ) {

$fields['instagram'] = array(

'label' => __( 'Un câmp'),

'value' => get_post_meta( $order->id, '_njengah_text_field', true ),

);

$fields['licence'] = array(

'label' => __( 'Un alt câmp' ),

'value' => get_post_meta( $order->id, '_njengah_dropdown', true ),

);

returnează $câmpuri;

}

add_filter('woocommerce_email_order_meta_fields', 'njengah_email_order_meta_fields', 10, 3 );

funcția njengah_show_email_order_meta( $comanda, $sent_to_admin, $plain_text ) {

$njengah_text_field = get_post_meta( $order->id, '_njengah_text_field', true );

$njengah_dropdown = get_post_meta( $order->id, '_njengah_dropdown', true );

if( $text_plat){

echo „Valoarea unui câmp este „. $njengah_text_field . ' în timp ce valoarea unui alt câmp este ' . $njengah_dropdown;

} altfel {

echo „<p>Valoarea pentru <strong>câmpul text de introducere</strong> este „ . $njengah_text_field. „ în timp ce valoarea <strong>drop down</strong> este „ . $njengah_dropdown . „</p>”;

}

}

add_action('woocommerce_email_customer_details', 'njengah_show_email_order_meta', 30, 3 );

Concluzie

În rezumat, am ilustrat cum puteți adăuga, edita și salva câmpuri personalizate în pagina de finalizare a plății WooCommerce. În plus, am editat șabloanele de e-mail pentru a adăuga informații din câmpurile personalizate ale e-mailurilor. Dacă trebuie să personalizați în continuare pagina de finalizare a comenzii, puteți utiliza un plugin de personalizare a comenzii.

Articole similare