如何简化结帐免费商品店面主题

已发表: 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 开发人员。

类似文章