EメールWooCommerceにカスタムチェックアウトフィールドを追加する方法

公開: 2020-12-17

EメールWooCommerceにカスタムチェックアウトフィールドを追加 WooCommerceストアのメールにカスタムチェックアウトフィールドを追加しますか?

WooCommerceは、カスタマイズに柔軟に対応できるWordPress用の強力なeコマースプラグインです。

この投稿では、請求先住所の削除、カスタムチェックアウトフィールドの追加/編集、これらのカスタムフィールドのデータベースへの保存など、追加のフィールドを動的にカスタマイズする方法を説明します。 さらに、これらのカスタムフィールドを追加してメールを注文する方法を紹介します。

カスタムチェックアウトフィールドから追加情報を削除する

最初のステップは、テーマのfunction.phpファイルにカスタムPHPコードスニペットを追加して、請求画面からアドレスフィールドを削除することです。

 関数woocommerce_remove_additional_information_checkout($ fields){

    unset($ fields ["billing_first_name"]);

    unset($ fields ["billing_last_name"]);

    $ fieldsを返します。

}

add_filter( 'woocommerce_billing_fields'、 'woocommerce_remove_additional_information_checkout');

これが結果です: 請求画面から住所フィールドを削除します

次のコードスニペットは、チェックアウトページにカスタムフィールドを追加し、データを注文メタに保存して、注文管理者に注文メタを表示します。 複数のフィールドを追加するプロセスについて、いくつかの質問を受けました。 この問題に対処するために、2つのフィールドを追加するコードスニペットを追加します。

EメールWooCommerceにカスタムチェックアウトフィールドを追加

コードスニペットは、テーマのfunctions.phpファイルに追加する必要があります。 アップグレード中に変更が失われないように、子テーマを使用することをお勧めします。

1.WooCommerceカスタムチェックアウトフィールドを追加します

関数.phpファイルに次のコードを追加して、カスタムWooCommerceチェックアウトフィールドを追加します。

 関数njengah_custom_checkout_fields($ fields){

$ fields ['njengah_extra_fields'] = array(

'njengah_text_field' => array(

'タイプ' => 'テキスト'、

'必須' => true、

'label' => __( '入力テキストフィールド')

)、

'njengah_dropdown' => array(

'type' => 'select'、

'options' => array( 'first' => __( 'First Option')、 'second' => __( 'Second Option')、 'third' => __( 'Third Option'))、

'必須' => true、

'ラベル' => __( 'ドロップダウンフィールド')

)。

);

$ fieldsを返します。

}

add_filter( 'woocommerce_checkout_fields'、 'njengah_custom_checkout_fields');

関数njengah_extra_checkout_fields(){

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

<div class = "extra-fields">

<h3> <?php _e( '追加フィールド'); ?> </ h3>

<?php

foreach($ checkout-> checkout_fields ['njengah_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'、 'njengah_extra_checkout_fields');

これが結果です: 追加フィールドセクション

2.カスタムチェックアウトWooCommerceフィールドのデータを保存します

次のコードをfunctions.phpファイルに追加して、カスタムチェックアウトWooCommerceフィールドのデータを保存します。

 関数njengah_save_extra_checkout_fields($ order_id、$ posted){

//別のフィールドタイプを使用している場合は、適切なサニタイズを忘れないでください

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( 'first'、 'second'、 'third'))){

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.WooCommerceカスタムフィールドのデータをユーザーに表示します

以下のコードをfunctions.phpファイルに追加して、WooCommerceカスタムフィールドのデータをユーザーに表示します。

 関数njengah_display_order_data($ order_id){?>

<h2> <?php _e( '追加情報'); ?> </ h2>

<table class = "shop_table shop_table_sensitiveadditional_info">

<tbody>

<tr>

<th> <?php _e( '入力テキストフィールド:'); ?> </ th>

<td> <?php echo get_post_meta($ order_id、 '_ njengah_text_field'、true); ?> </ td>

</ tr>

<tr>

<th> <?php _e( 'ドロップダウンフィールド:'); ?> </ th>

<td> <?php echo get_post_meta($ order_id、 '_ njengah_dropdown'、true); ?> </ td>

</ tr>

</ tbody>

</ table>

<?php}

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

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

これが結果です: 追加情報

4.WooCommerce管理者のカスタム注文フィールドを表示します

このコードスニペットは、配送先住所と請求先住所のデータとして機能し、ユーザーが小さな鉛筆アイコンをクリックすると入力が表示されます。

 関数njengah_display_order_data_in_admin($ order){?>

<div class = "order_data_column">

<h4> <?php _e( '追加情報'、 'woocommerce'); ?> <a href="#" class="edit_address"> <?php _e( '編集'、 'woocommerce'); ?> </a> </ h4>

<div class = "address">

<?php

エコー '<p> <strong>'。 __( 'テキストフィールド' ) 。 ':</ strong>'。 get_post_meta($ order-> id、 '_ njengah_text_field'、true)。 '</ p>';

エコー '<p> <strong>'。 __( '落ちる' ) 。 ':</ 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' => __( '一部のフィールド')、 'wrapper_class' => '_ billing_company_field')); ?>

<?php woocommerce_wp_text_input(array( 'id' => '_ njengah_dropdown'、 'label' => __( '別のフィールド')、 'wrapper_class' => '_ billing_company_field')); ?>

</ div>

</ div>

<?php}

add_action( 'woocommerce_admin_order_data_after_order_details'、 'njengah_display_order_data_in_admin');




関数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);

これが結果です: 追加情報を編集する

5.WooCommerceカスタムフィールドを注文メールに追加します

次のコードをfunctions.phpファイルに追加して、メールを注文するためのWooCommerceカスタムフィールドを追加します。 電子メールの出力をカスタマイズしたい場合は、電子メールテンプレートで使用可能なフックのいずれかにテキストを追加できます。

 function njengah_email_order_meta_fields($ fields、$ send_to_admin、$ order){

$ fields ['instagram'] = array(

'ラベル' => __( '一部のフィールド')、

'value' => get_post_meta($ order-> id、 '_ njengah_text_field'、true)、

);

$ fields ['licence'] = array(

'ラベル' => __( '別のフィールド')、

'value' => get_post_meta($ order-> id、 '_ njengah_dropdown'、true)、

);

$ fieldsを返します。

}

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

function njengah_show_email_order_meta($ order、$ send_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($ plain_text){

echo 'あるフィールドの値は'です。 $ njengah_text_field。 '別のフィールドの値が'である間。 $ njengah_dropdown;

} それ以外 {

echo '<p> <strong>入力テキストフィールド</ strong>の値は'です。 $ njengah_text_field。 '<strong>ドロップダウン</ strong>の値は'です。 $ njengah_dropdown。 '</ p>';

}

}

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

結論

要約すると、カスタムフィールドをWooCommerceチェックアウトページに追加、編集、および保存する方法を説明しました。 さらに、メールテンプレートを編集して、メールのカスタムフィールドから情報を追加しました。 チェックアウトページをさらにカスタマイズする必要がある場合は、チェックアウトカスタマイザープラグインを使用できます。

同様の記事