如何簡化結帳免費商品店面主題

已發表: 2020-11-03

店面簡化結帳免費項目 在大多數 WooCommerce 商店中,客戶在結賬後購買產品並彙款。 此外,他們還將選擇送貨方式或輸入優惠券代碼以獲得折扣。

但是,如果您在商店中提供免費商品,您可能不需要在結帳時填寫所有字段。 這意味著您不會收取任何運費。 因此,您可能不需要賬單詳細信息,只需要姓名,可能還需要電子郵件。

店面簡化結帳免費項目

值得一提的是,WooCommerce 將有助於刪除免費結賬的付款方式選擇。 但是,帳單字段仍然存在並且需要下訂單: 結算明細

如果您銷售免費的虛擬產品,例如免費會員,最好簡化結帳流程。

如果您遇到此問題,可以通過 WC()->cart->needs_payment() 檢查輕鬆檢查結帳是否免費。 如果不需要付款,我將說明如何使用它來採取一些措施來簡化免費的 WooCommerce 結帳。 我們需要有條件地刪除一些計費字段。

讓我引導您完成一些步驟,您可以採取哪些步驟來簡化免費結帳並將其組合成一個可用的片段。

簡化免費商品結賬的步驟

  1. 刪除優惠券表格

如果您想免費結帳,則不需要優惠券表格,因為沒有什麼可以打折的。 我會用! WC()->cart->needs_payment() 作為支票,它將假設結帳總額為 0 美元,因此不需要運費或訂單付款。 為了安全地移除優惠券輸入,我們需要使用以下代碼:

 // 如果您不想要免費購物車的優惠券,請刪除優惠券表格

remove_action('woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10);
  1. 禁用訂單備註

您可能想收集免費訂單的訂單說明。 但是,我們正在嘗試做的主要事情是為您的 WooCommerce 商店中的客戶簡化結帳流程。 我將刪除結帳的整個“附加信息”部分。 這可以使用 woocommerce_enable_order_notes_field 過濾器來完成,因為我們可以將其設置為 false,因此沒有訂單備註。

 // 刪除“附加信息”訂單註釋

add_filter('woocommerce_enable_order_notes_field', '__return_false');
  1. 取消設置不必要的字段

由於它是免費訂單,我們不需要從信用卡中收取費用。 結帳中的大多數計費字段都不需要。 這意味著我必須取消設置我不需要的購買字段。 您可以在 WooCommerce 文檔中找到結帳字段的列表。

 // 在免費結賬時取消設置我們不想要的字段

功能 unset_unwanted_checkout_fields( $fields ) {

// 要刪除的計費字段鍵列表

$billing_keys = 數組(

'billing_company',

'計費電話',

'帳單地址_1',

'帳單地址_2',

'計費城市',

'billing_postcode',

'計費國家',

'帳單狀態',

);

// 取消設置每個不需要的字段

foreach( $billing_keys 作為 $key ) {

未設置($fields['billing'][$key]);

}

返回$字段;

}

add_filter('woocommerce_checkout_fields', 'unset_unwanted_checkout_fields');

但是,您可以選擇要從結帳表單中刪除的字段。

  1. 添加代碼

以下是在 Storefront 主題的 functions.php 文件中添加代碼的步驟:

  1. 登錄您的 WordPress 站點並以管理員用戶身份訪問儀表板
  2. 從儀表板菜單中,單擊外觀菜單 > 主題編輯器菜單。 打開主題編輯器頁面後,查找主題函數文件以簡化免費項目結帳。
  3. 將以下代碼添加到函數中。 php
 /**

 * 如果結帳不需要付款,則刪除優惠券表格、訂單備註和幾個帳單字段。

 *

 * 需要 PHP 5.3+

 *

  */

函數 sv_free_checkout_fields() {

            // 首先,如果 WC 不活躍,則保釋,因為我們被掛在了一個通用的 WP 鉤子中

            如果(!function_exists('WC')){

                        返回;

            }

            // 如果購物車需要付款,則保釋,我們不想做任何事情

            if ( WC()->cart && WC()->cart->needs_payment() ) {

                        返回;

            }

            // 現在只有在我們結帳時才繼續

            // is_checkout() 從 WC 3.2 開始在 ajax 上下文中被破壞,仔細檢查 is_ajax

            // 我會檢查 WOOCOMMERCE_CHECKOUT 但測試表明它的設置不可靠

            if ( function_exists( 'is_checkout' ) && ( is_checkout() || is_ajax() ) ) {

                        // 刪除優惠券表格,因為您為什麼想要免費購物車的優惠券?

                        remove_action('woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10);

                        // 刪除“附加信息”訂單註釋

                        add_filter('woocommerce_enable_order_notes_field', '__return_false');

                        // 在免費結賬時取消設置我們不想要的字段

                        add_filter('woocommerce_checkout_fields',函數($fields){

                                    // 添加或刪除不需要的計費字段

                                    // 字段:http://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/#section-2

                                    $billing_keys = 數組(

                                                'billing_company',

                                                '計費電話',

                                                '帳單地址_1',

                                                '帳單地址_2',

                                                '計費城市',

                                                'billing_postcode',

                                                '計費國家',

                                                '帳單狀態',

                                    );

                                    // 取消設置每個不需要的字段

                                    foreach( $billing_keys 作為 $key ) {

                                                未設置($fields['billing'][$key]);

                                    }

                                    返回$字段;

                        });

            }

}

add_action('wp', 'sv_free_checkout_fields');
  1. 當您添加整個代碼時,WooCommerce 結帳將被簡化: 簡化結帳

結論

總之,我已經引導您完成了簡化結帳流程的步驟。 我已經詳細解釋了這些步驟,以便您可以理解代碼。 但是,您需要注意,本文包含您可以在活動主題 function.php 文件中進行的代碼更改或片段。 如果您不熟悉此任務,請聘請 WordPress 開發人員。

類似文章