Jak dodać niestandardowe pole kasy do wiadomości e-mail WooCommerce?

Opublikowany: 2020-12-17

Dodaj niestandardowe pole kasy do wiadomości e-mail WooCommerce Czy chcesz dodać niestandardowe pole kasy do wiadomości e-mail w swoim sklepie WooCommerce?

WooCommerce to potężna wtyczka eCommerce do WordPressa, która jest elastyczna w dostosowywaniu.

W tym poście zobaczysz, jak możesz dynamicznie dostosowywać dodatkowe pola, takie jak usuwanie adresu rozliczeniowego, dodawanie/edycja niestandardowych pól kasy i zapisywanie tych niestandardowych pól w bazie danych. Dodatkowo pokażę Ci, jak możesz dodać te niestandardowe pola do e-maili z zamówieniami.

Usuń dodatkowe informacje z niestandardowych pól kasy

Pierwszym krokiem jest dodanie niestandardowego fragmentu kodu PHP w pliku function.php motywu, aby usunąć pola adresu z ekranu rozliczeń:

 funkcja woocommerce_remove_additional_information_checkout($fields){

    unset( $fields["billing_first_name"] );

    unset( $fields["billing_last_name"] );

    zwróć $pola;

}

add_filter( 'woocommerce_billing_fields', 'woocommerce_remove_additional_information_checkout' );

Oto wynik: usuń pola adresowe z ekranu rozliczeń

Poniższe fragmenty kodu dodadzą niestandardowe pole do strony kasy, zapiszą dane w meta zamówienia i wyświetlą meta zamówienia w administratorze zamówień. Otrzymałem kilka zapytań dotyczących procesu dodawania wielu pól. Aby pomóc rozwiązać ten problem, dodamy fragment kodu, aby dodać dwa pola.

Dodaj niestandardowe pole kasy do wiadomości e-mail WooCommerce

Fragmenty kodu należy dodać do pliku functions.php motywu. Zalecam używanie motywu potomnego, aby Twoje zmiany nie zostały utracone podczas aktualizacji.

1. Dodaj niestandardowe pole kasy WooCommerce

Dodaj następujący kod w pliku functions.php, aby dodać niestandardowe pole kasy WooCommerce:

 funkcja njengah_custom_checkout_fields($fields){

$fields['njengah_extra_fields'] = tablica (

'njengah_text_field' => tablica (

'typ' => 'tekst',

'wymagane' => prawda,

'label' => __( 'Wprowadź pole tekstowe' )

),

'njengah_dropdown' => tablica (

'typ' => 'wybierz',

'options' => array( 'pierwsza' => __( 'Pierwsza opcja' ), 'druga' => __( 'Druga opcja' ), 'trzecia' => __( 'Trzecia opcja') ),

'wymagane' => prawda,

'etykieta' => __( 'Rozwijane pole' )

)

);

zwróć $pola;

}

add_filter( 'woocommerce_checkout_fields', 'njengah_custom_checkout_fields' );

funkcja njengah_extra_checkout_fields(){

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

<div class="dodatkowe pola">

<h3><?php _e( 'Dodatkowe pola' ); ?></h3>

<?php

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

<?php woocommerce_form_field( $klucz, $pole, $kasa->get_value( $klucz) ); ?>

<?php endforeach; ?>

</div>

<?php }

add_action( 'woocommerce_checkout_after_customer_details' ,'njengah_extra_checkout_fields' );

Oto wynik: sekcja pól dodatkowych

2. Zapisz dane niestandardowych pól WooCommerce w kasie

Dodaj następujący kod w pliku functions.php, aby zapisać dane niestandardowych pól WooCommerce w kasie.

 funkcja njengah_save_extra_checkout_fields( $order_id, $posted ){

// nie zapomnij o odpowiednim oczyszczeniu, jeśli używasz innego typu pola

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

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

}

if( isset( $posted['njengah_dropdown'] ) && in_array( $posted['njengah_dropdown'], array( 'pierwszy', 'drugi', 'trzeci') ) ) {

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. Wyświetl dane z niestandardowych pól WooCommerce użytkownikowi

Dodaj następujący kod w pliku functions.php, aby wyświetlić użytkownikowi dane pól niestandardowych WooCommerce.

 funkcja njengah_display_order_data( $order_id ){ ?>

<h2><?php _e( 'Dodatkowe informacje' ); ?></h2>

<table class="shop_table shop_table_responsive dodatkowe_informacje">

<tbody>

<tr>

<th><?php _e( 'Wprowadź pole tekstowe:' ); ?></th>

<td><?php echo get_post_meta( $id_zamówienia, '_njengah_text_field', prawda ); ?></td>

</tr>

<tr>

<th><?php _e( 'Rozwijane pole:' ); ?></th>

<td><?php echo get_post_meta( $id_zamówienia, '_njengah_dropdown', prawda ); ?></td>

</tr>

</tbody>

</table>

<?php }

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

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

Oto wynik: informacje dodatkowe

4. Wyświetl niestandardowe pola zamówienia administratora WooCommerce

Ten fragment kodu będzie funkcjonował jako dane adresu wysyłki i fakturowania oraz będzie ujawniał dane wejściowe, gdy użytkownik kliknie małą ikonę ołówka.

 funkcja njengah_display_order_data_in_admin( $zamówienie ){ ?>

<div class="order_data_column">

<h4><?php _e( 'Dodatkowe informacje', 'woocommerce' ); ?><a href="#" class="edit_address"><?php _e( 'Edytuj', 'woocommerce' ); ?></a></h4>

<div class="adres">

<?php

echo '<p><strong>' . __( 'Pole tekstowe' ) . ':</strong>' . get_post_meta( $order->id, '_njengah_text_field', true ) . '</p>';

echo '<p><strong>' . __( 'Upuścić' ) . ':</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' => __( 'Niektóre pole' ), 'wrapper_class' => '_billing_company_field' ) ); ?>

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

</div>

</div>

<?php }

add_action( 'woocommerce_admin_order_data_after_order_details', 'njengah_display_order_data_in_admin' );




funkcja 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 );

Oto wynik: edytuj dodatkowe informacje

5. Dodaj niestandardowe pola WooCommerce do zamówień e-mail

Dodaj następujący kod w pliku functions.php, aby dodać niestandardowe pola WooCommerce do zamówień e-maili. Jeśli chcesz dostosować dane wyjściowe w wiadomościach e-mail, możesz dodać tekst do dowolnego z haków dostępnych w szablonach wiadomości e-mail.

 function njengah_email_order_meta_fields( $fields, $sent_to_admin, $order ) {

$fields['instagram'] = tablica(

'label' => __( 'Jakie pole' ),

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

);

$fields['licence'] = tablica(

'label' => __( 'Inne pole' ),

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

);

zwróć $pola;

}

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

function njengah_show_email_order_meta( $zamówienie, $sent_to_admin, $plain_text) {

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

$njengah_dropdown = get_post_meta( $zamówienie->id, '_njengah_dropdown', prawda );

jeśli ( $zwykły_tekst ){

echo 'Wartość jakiegoś pola to ' . $njengah_text_field . ' podczas gdy wartość innego pola to ' . $njengah_dropdown;

} w przeciwnym razie {

echo '<p>Wartość <strong>pola wprowadzania tekstu</strong> to ' . $njengah_text_field. ' podczas gdy wartość <strong>menu rozwijanego</strong> wynosi ' . $njengah_dropdown . '</p>';

}

}

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

Wniosek

Podsumowując, zilustrowałem, jak dodawać, edytować i zapisywać niestandardowe pola na stronie kasy WooCommerce. Dodatkowo edytowałem szablony e-maili, aby dodać informacje z niestandardowych pól e-maili. Jeśli chcesz dalej dostosować stronę kasy, możesz użyć wtyczki dostosowywania kasy.

Podobne artykuły