如何在 WooCommerce 中將日期字段添加到結帳
已發表: 2020-12-20許多在線商店在結帳頁面上需要自定義字段。 例如,蛋糕店可能需要結帳頁面上的交貨日期字段。
WooCommerce 的美妙之處在於它允許您在結帳頁面上添加自定義字段,例如在賬單和運輸字段之後,或在下訂單按鈕之前。
WooCommerce 將日期字段添加到結帳
在這篇文章中,您將學習如何在 WooCommerce 結帳頁面上添加交貨日期字段。 我將在計費字段之後添加它。 此字段將允許客戶為其訂單選擇交貨日期。 此外,我將分享如何在電子郵件通知和訂單接收頁面上顯示自定義字段。
1. 在 WooCommerce 結帳頁面上添加自定義日期字段
WooCommerce 允許您根據將使用的鉤子將自定義字段添加到各個位置。 WooCommerce 在結帳頁面上定義了許多操作。 對於本教程,我將在帳單或送貨地址字段之後添加該字段。
要在此處添加自定義字段,我們將使用操作woocommerce_after_checkout_billing_form
。 在 functions.php 文件中添加以下代碼:
add_action('woocommerce_after_checkout_billing_form', 'njengah_extra_fields_after_billing_address', 10, 1); 功能 njengah_extra_fields_after_billing_address () { _e("交貨日期:", "add_extra_fields"); ?> <br> <input type="text" name="add_delivery_date" class="add_delivery_date" placeholder="交貨日期"> <?php }
這是結果:
客戶需要選擇訂單的交貨日期。 這意味著我們需要為這個字段添加一個日曆。 或者,您可以嘗試使用簡單的文本字段來保持簡單。
我們將使用 jQuery 日期選擇器。 這意味著我們需要使用 WordPress wp_enqueue_scripts 操作來包含其必要的 JavaScript 和 CSS 文件。
add_action('woocommerce_after_checkout_billing_form', 'display_extra_fields_after_billing_address', 10, 1); 功能 display_extra_fields_after_billing_address () { _e("交貨日期:", "add_extra_fields"); ?> <br> <input type="text" name="add_delivery_date" class="add_delivery_date" placeholder="交貨日期"> <腳本> jQuery(文檔).ready(函數($){ $( ".add_delivery_date").datepicker( { 分鐘日期:0, }); }); </腳本> <?php } add_action('wp_enqueue_scripts', 'enqueue_datepicker'); 函數 enqueue_datepicker() { 如果 ( is_checkout() ) { // 加載 datepicker 腳本(在 WordPress 中預註冊)。 wp_enqueue_script('jquery-ui-datepicker'); // 您需要日期選擇器的樣式。 為簡單起見,我已鏈接到 Google 託管的 jQuery UI CSS。 wp_register_style('jquery-ui', '//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css'); wp_enqueue_style('jquery-ui'); } }
這是結果:
代碼如何運作
我已將函數display_extra_fields_after_billing_address()
附加到 WooCommerce 操作。 首先,我們打印標籤“Delivery Date”並為日期選擇器添加一個輸入文本類型字段,我們可以使用jquery datepicker(
) 函數。
enqueue_datepicker()
函數附加到 WordPress 操作中。 在這個函數中,我使用wp_enqueue_script()
添加了jQuery datepicker 及其樣式。
一旦我們添加了上面的代碼片段,它將在帳單地址字段下方顯示我們的自定義字段。
2. 在電子郵件通知中顯示自定義字段
下一步是添加自定義字段以顯示在客戶電子郵件中。 將以下代碼添加到 functions.php 文件中:
add_action('woocommerce_checkout_update_order_meta', 'add_order_delivery_date_to_order', 10, 1); 功能 add_order_delivery_date_to_order ( $order_id ) { if ( isset( $_POST ['add_delivery_date'] ) && '' != $_POST ['add_delivery_date'] ) { add_post_meta( $order_id, '_delivery_date', sanitize_text_field( $_POST ['add_delivery_date'] ) ); } }
代碼如何運作
我已將add_order_delivery_date_to_order()
函數附加到 WooCommerce 操作。 它會將交貨日期添加到發布元表中。 在將日期添加到數據庫之前,它將驗證客戶是否已選擇日期。
如果客戶選擇日期,則使用 WordPress 函數add_post_meta()
將其存儲在wp_postmeta
表中。 此功能需要post_id
、元鍵和元值。 在我們的例子中,我們使用 Order id 作為我們的post_id
,元鍵將是_delivery_date
元值將是客戶選擇的交貨日期。
我建議您清理$_POST
變量數據。 它從字符串中刪除換行符、製表符和多餘的空格。
將交貨日期存儲在數據庫中後,我們將顯示在客戶電子郵件中。 在 functions.php 文件中添加以下代碼:
add_filter('woocommerce_email_order_meta_fields', 'add_delivery_date_to_emails', 10, 3); 功能 add_delivery_date_to_emails ( $fields, $sent_to_admin, $order ) { if(version_compare(get_option('woocommerce_version'),'3.0.0',">=")){ $order_id = $order->get_id(); } 別的 { $order_id = $order->id; } $delivery_date = get_post_meta($order_id, '_delivery_date', true ); if ( '' != $delivery_date ) { $fields[ '交貨日期' ] = array( '標籤' => __( '交貨日期', 'add_extra_fields' ), '價值' => $delivery_date, ); } 返回$字段; }
3. 在 WooCommerce 感謝頁面上顯示自定義字段
要在 WooCommerce Order Received 頁面上顯示自定義字段,我們將使用 WooCommerce 過濾器woocommerce_order_details_after_order_table
。 在 functions.php 文件中添加以下代碼:
add_filter('woocommerce_order_details_after_order_table', 'add_delivery_date_to_order_received_page', 10, 1); 功能 add_delivery_date_to_order_received_page ( $order ) { if(version_compare(get_option('woocommerce_version'),'3.0.0',">=")){ $order_id = $order->get_id(); } 別的 { $order_id = $order->id; } $delivery_date = get_post_meta($order_id, '_delivery_date', true ); if ( '' != $delivery_date ) { 迴聲'<p><strong>'。 __( '交貨日期', 'add_extra_fields' ) 。 ':</strong>' 。 $delivery_date; } }
這是結果:
代碼如何運作
我已將add_delivery_date_to_order_received_page()
附加到 WooCommerce 過濾器。 此函數的參數用於獲取訂單 ID。 需要訂單 ID 才能從wp_postmeta
表中獲取選定的交貨日期。
這是結果:
完整代碼片段
如果您在學習本教程時遇到問題,這裡是完整的代碼片段。 將其粘貼到 functions.php 文件中:
/* 插件名稱:在 WooCommerce 結帳頁面上添加字段。 描述:一個關於如何在 WooCommerce 結帳頁面上添加額外字段的簡單演示插件。 */ add_action('woocommerce_after_checkout_billing_form', 'display_extra_fields_after_billing_address', 10, 1); 功能 display_extra_fields_after_billing_address () { _e("交貨日期:", "add_extra_fields"); ?> <br> <input type="text" name="add_delivery_date" class="add_delivery_date" placeholder="交貨日期"> <腳本> jQuery(文檔).ready(函數($) { $(".add_delivery_date").datepicker({ 分鐘日期:0, }); }); </腳本> <?php } add_action('wp_enqueue_scripts', 'enqueue_datepicker'); 函數 enqueue_datepicker() { 如果 ( is_checkout() ) { // 加載 datepicker 腳本(在 WordPress 中預註冊)。 wp_enqueue_script('jquery-ui-datepicker'); // 您需要日期選擇器的樣式。 為簡單起見,我已鏈接到 Google 託管的 jQuery UI CSS。 wp_register_style('jquery-ui', '//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css'); wp_enqueue_style('jquery-ui'); } } add_action('woocommerce_checkout_update_order_meta', 'add_order_delivery_date_to_order', 10, 1); 功能 add_order_delivery_date_to_order ( $order_id ) { if ( isset( $_POST ['add_delivery_date'] ) && '' != $_POST ['add_delivery_date'] ) { add_post_meta( $order_id, '_delivery_date', sanitize_text_field( $_POST ['add_delivery_date'] ) ); } } add_filter('woocommerce_email_order_meta_fields', 'add_delivery_date_to_emails', 10, 3); 功能 add_delivery_date_to_emails ( $fields, $sent_to_admin, $order ) { if(version_compare(get_option('woocommerce_version'),'3.0.0',">=")){ $order_id = $order->get_id(); } 別的 { $order_id = $order->id; } $delivery_date = get_post_meta($order_id, '_delivery_date', true ); if ( '' != $delivery_date ) { $fields[ '交貨日期' ] = array( '標籤' => __( '交貨日期', 'add_extra_fields' ), '價值' => $delivery_date, ); } 返回$字段; } add_filter('woocommerce_order_details_after_order_table', 'add_delivery_date_to_order_received_page', 10, 1); 功能 add_delivery_date_to_order_received_page ( $order ) { if(version_compare(get_option('woocommerce_version'),'3.0.0',">=")){ $order_id = $order->get_id(); } 別的 { $order_id = $order->id; } $delivery_date = get_post_meta($order_id, '_delivery_date', true ); if ( '' != $delivery_date ) { 迴聲'<p><strong>'。 __( '交貨日期', 'add_extra_fields' ) 。 ':</strong>' 。 $delivery_date; } }
而已!
結論
總之,您已經學習瞭如何將自定義日期字段添加到結帳、在電子郵件通知中顯示以及在感謝頁面上顯示。 但是,如果您不熟悉編輯代碼,則可以使用結帳定制器插件。 我建議使用子主題,這樣您的更改就不會在更新過程中丟失。
類似文章
- 如何將選擇字段添加到結帳 WooCommerc
- 如何設置 WooCommerce 結帳字段佔位符
- 如何在 WooCommerce 中隱藏沒有價格的產品
- 如何在 WooCommerce 中隱藏沒有圖像的產品
- 如何隱藏任何選項卡我的帳戶頁面 WooCommerce
- 如何隱藏更新購物車按鈕 WooCommerce 購物車頁面
- 如何在 WooCommerce 中隱藏庫存數量
- 如何在結帳 WooCommerce 中創建帳戶
- 如何編輯所需的 WooCommerce 結帳字段
- 如何創建 WooCommerce 條件結帳字段
- 如何編輯 WooCommerce 結帳頁面模板
- 如何添加 WooCommerce 增值稅號結帳頁面
- 如何在 WooCommerce 結帳頁面上添加隱藏字段
- 如何移動主菜單店面 WooCommerce
- 如果可以免費送貨,如何隱藏運費 WooCommerce
- 如何添加 WooCommerce 發票結帳頁面
- 如何在 WooCommerce 結帳表單中添加額外字段
- 如何添加 WooCommerce Checkout 默認國家
- 如何隱藏產品描述標題 WooCommerce