WordPress主题开发中如何实现文章相互关联
最近在帮客户定制开发一款WordPress虫草网站主题的时候,其中有两个自定义分类(不是自定义分类也没问题)分别是产品分类和商家分类,当然对应的都是产品文章和商…
目录
在 WooCommerce 商城中,我们经常会遇到这样的需求:当购物车中的商品总价达到某个金额时,自动应用折扣。例如:
✅ 订单满 100 元,立减 10 元;
✅ 订单满 200 元,立减 30 元;
✅ 订单满 500 元,立减 80 元;
这样不仅能提高客单价,还能提升用户的购买欲望。本文将介绍如何在 WooCommerce 购物车页面 动态应用折扣,并确保它们正确显示在结算页面和订单详情中。
WooCommerce 提供了 woocommerce_cart_calculate_fees
钩子,我们可以通过它在购物车页面动态计算折扣:
function apply_cart_discount_based_on_total( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
return;
}
$cart_total = $cart->subtotal; // 获取购物车小计金额(不含折扣)
$discount = 0;
// 设置折扣规则
if ( $cart_total >= 500 ) {
$discount = 80;
} elseif ( $cart_total >= 200 ) {
$discount = 30;
} elseif ( $cart_total >= 100 ) {
$discount = 10;
}
// 如果有折扣,则应用到购物车
if ( $discount > 0 ) {
$cart->add_fee( '满减优惠', -$discount, false );
}
}
add_action( 'woocommerce_cart_calculate_fees', 'apply_cart_discount_based_on_total' );
📌 代码解析:
woocommerce_cart_calculate_fees
钩子用于动态计算购物车的额外费用或折扣;$cart->subtotal
获取购物车的小计金额(不含折扣);add_fee()
方法,我们可以添加一个负数值来应用折扣。🚀 现在,当购物车达到特定金额时,折扣会自动生效!
为了确保用户在结算时能清楚看到折扣,我们可以在订单摘要中显示折扣详情。
function display_discount_on_checkout( $total_rows, $order, $tax_display ) {
$discount = get_post_meta( $order->get_id(), '_cart_discount', true );
if ( $discount ) {
$total_rows['cart_discount'] = array(
'label' => '满减优惠',
'value' => '-' . wc_price( $discount ),
);
}
return $total_rows;
}
add_filter( 'woocommerce_get_order_item_totals', 'display_discount_on_checkout', 10, 3 );
📌 代码解析:
woocommerce_get_order_item_totals
过滤器可以修改订单结算页面的费用明细;wc_price()
用于格式化金额,确保货币符号正确显示。📌 效果: 结算页面会显示类似于:
商品总计: ¥300
满减优惠: -¥30
应付金额: ¥270
为了确保管理员和客户都能在订单详情和邮件中看到折扣,我们需要在订单元数据中存储折扣金额。
function save_cart_discount_to_order( $order_id ) {
if ( isset( WC()->cart->cart_contents_total ) ) {
$cart_total = WC()->cart->cart_contents_total;
$discount = 0;
if ( $cart_total >= 500 ) {
$discount = 80;
} elseif ( $cart_total >= 200 ) {
$discount = 30;
} elseif ( $cart_total >= 100 ) {
$discount = 10;
}
if ( $discount > 0 ) {
update_post_meta( $order_id, '_cart_discount', $discount );
}
}
}
add_action( 'woocommerce_checkout_update_order_meta', 'save_cart_discount_to_order' );
📌 代码解析:
woocommerce_checkout_update_order_meta
钩子用于在用户下单后,保存折扣信息到订单元数据;update_post_meta()
用于存储 _cart_discount
订单元数据,以便后续查询和显示。WooCommerce 会在下单后自动发送订单确认邮件,我们可以在邮件中显示折扣信息。
function add_discount_to_email( $order, $sent_to_admin, $plain_text, $email ) {
$discount = get_post_meta( $order->get_id(), '_cart_discount', true );
if ( $discount ) {
echo '<p><strong>满减优惠:</strong> -' . wc_price( $discount ) . '</p>';
}
}
add_action( 'woocommerce_email_order_details', 'add_discount_to_email', 20, 4 );
📌 代码解析:
woocommerce_email_order_details
钩子允许我们在邮件正文中插入额外信息;wc_price( $discount )
确保折扣金额正确显示货币单位。✔ 购物车页面——当商品总价达到指定门槛,折扣自动生效;
✔ 结算页面——折扣金额清晰显示在订单明细中;
✔ 订单详情页——管理员可以在 WooCommerce 后台查看折扣金额;
✔ 订单邮件——客户可以在邮件中看到折扣详情。
本文介绍了如何在 WooCommerce 购物车页面自动应用动态折扣,并确保折扣信息在结算页面、订单详情页和邮件中正确显示。通过这个方法,你可以提升用户体验,增加销售额,让促销策略更加灵活!
🚀 赶紧试试看,让你的 WooCommerce 商城更具吸引力吧!
WordPress日记主要承接WordPress主题定制开发、PSD转WordPress、WordPress仿站以及以WordPress为管理后端的小程序、APP,我们一直秉持“做一个项目,交一个朋友”的理念,希望您是我们下一个朋友。如果您有WordPress主题开发需求,可随时联系QQ:919985494 微信:18539976310