EメールWooCommerceにカスタムチェックアウトフィールドを追加する方法
公開: 2020-12-17 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チェックアウトページに追加、編集、および保存する方法を説明しました。 さらに、メールテンプレートを編集して、メールのカスタムフィールドから情報を追加しました。 チェックアウトページをさらにカスタマイズする必要がある場合は、チェックアウトカスタマイザープラグインを使用できます。
同様の記事
- 製品ページにWoocommerceカスタムテキストフィールドを追加する方法
- WordPressでカスタムウィジェットエリアを作成する方法ステップバイステップ
- プライマリメニューストアフロントWooCommerceを移動する方法
- 送料無料が利用可能な場合に送料を非表示にする方法WooCommerce
- WooCommerceの在庫数を非表示にする方法
- SKU、カテゴリ、タグを非表示にする方法メタ製品ページWooCommerce
- カートの更新ボタンを非表示にする方法WooCommerceカートページ
- 商品説明の見出しWooCommerceを非表示にする方法
- タブを非表示にする方法マイアカウントページWooCommerce
- WooCommerceのチェックアウトエラーメッセージを変更する方法
