如何简化结帐免费商品店面主题
已发表: 2020-11-03
在大多数 WooCommerce 商店中,客户在结账后购买产品并汇款。 此外,他们还将选择送货方式或输入优惠券代码以获得折扣。
但是,如果您在商店中提供免费商品,您可能不需要在结帐时填写所有字段。 这意味着您不会收取任何运费。 因此,您可能不需要账单详细信息,只需要姓名,可能还需要电子邮件。
店面简化结帐免费项目
值得一提的是,WooCommerce 将有助于删除免费结账的付款方式选择。 但是,帐单字段仍然存在并且需要下订单:
如果您销售免费的虚拟产品,例如免费会员,最好简化结帐流程。
如果您遇到此问题,可以通过 WC()->cart->needs_payment() 检查轻松检查结帐是否免费。 如果不需要付款,我将说明如何使用它来采取一些措施来简化免费的 WooCommerce 结帐。 我们需要有条件地删除一些计费字段。
让我引导您完成一些步骤,您可以采取哪些步骤来简化免费结帐并将其组合成一个可用的片段。
简化免费商品结账的步骤
- 删除优惠券表格
如果您想免费结帐,则不需要优惠券表格,因为没有什么可以打折的。 我会用! WC()->cart->needs_payment() 作为支票,它将假设结帐总额为 0 美元,因此不需要运费或订单付款。 为了安全地移除优惠券输入,我们需要使用以下代码:
// 如果您不想要免费购物车的优惠券,请删除优惠券表格
remove_action('woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10);- 禁用订单备注
您可能想收集免费订单的订单说明。 但是,我们正在尝试做的主要事情是为您的 WooCommerce 商店中的客户简化结帐流程。 我将删除结帐的整个“附加信息”部分。 这可以使用 woocommerce_enable_order_notes_field 过滤器来完成,因为我们可以将其设置为 false,因此没有订单备注。
// 删除“附加信息”订单注释
add_filter('woocommerce_enable_order_notes_field', '__return_false');- 取消设置不必要的字段
由于它是免费订单,我们不需要从信用卡中收取费用。 结帐中的大多数计费字段都不需要。 这意味着我必须取消设置我不需要的购买字段。 您可以在 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');但是,您可以选择要从结帐表单中删除的字段。
- 添加代码
以下是在 Storefront 主题的 functions.php 文件中添加代码的步骤:
- 登录您的 WordPress 站点并以管理员用户身份访问仪表板。
- 从仪表板菜单中,单击外观菜单 > 主题编辑器菜单。 打开主题编辑器页面后,查找主题函数文件以简化免费项目结帐。
- 将以下代码添加到函数中。 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');- 当您添加整个代码时,WooCommerce 结帐将被简化:

结论
总之,我已经引导您完成了简化结帐流程的步骤。 我已经详细解释了这些步骤,以便您可以理解代码。 但是,您需要注意,本文包含您可以在活动主题 function.php 文件中进行的代码更改或片段。 如果您不熟悉此任务,请聘请 WordPress 开发人员。

类似文章
- 如何更改店面主题标语 WooCommerce
- 如何在 WooCommerce 结帐表单中添加额外字段
- 如何添加免责声明店面 WooCommerce
- 如何设置 WooCommerce 店面主题产品页面全宽
- 如何修复未捕获的类型错误:wp.template 不是函数
- 如何在不使用插件的情况下在 WordPress 中创建数字分页
- 如何移动主菜单店面 WooCommerce
- 如何删除购物车页面 WooCommerce 店面主题
- 如何在 WooCommerce 中自动批准订单
- 如何更改店面 WooCommerce 主题中的链接颜色
- 如何添加 WooCommerce 店面英雄形象
- 如何在刷新 WordPress 页面时重定向 » 检测页面刷新 PHP
- 在 WooCommerce 中更改继续结帐文本
- WooCommerce 注销 PHP 代码段以创建注销按钮
- 如何调整页眉的 WooCommerce 店面高度
- 如何添加产品图片 WooCommerce 结帐页面
- 如何设置 WooCommerce 店面页脚小部件
- 如何计算添加到购物车 WooCommerce 购物车计数代码的项目
