我正在尝试在购物车/订单总额中添加额外费用,只有这是客户的第一笔订单。
我在网上搜索了很多,但我还没有找到任何具体的解决方案。
请有人建议/指导最好的解决方案。
由于
答案 0 :(得分:3)
您使用购物车类'添加费用的add_fee()
方法。没有内置的方法来了解客户订单的数量,因此我们可以尝试通过名为_number_order
的用户元字段来跟踪该订单。
function so_27969258_add_cart_fee() {
$orders = intval( get_user_meta( get_current_user_id(), '_number_orders', true ) );
if( $orders < 1 ){
WC()->cart->add_fee( __( 'First time fee', 'your-plugin'), 100 );
}
}
add_action( 'woocommerce_before_calculate_totals', 'so_27969258_add_cart_fee' );
如果我们实际上没有更新_number_orders
密钥,那么它将始终为null / empty / zero,并且将始终向用户收取第一次费用。因此,我们可以在用户完成付款时尝试更新该密钥。
function so_27969258_track_orders_per_customer(){
$orders = intval( get_user_meta( get_current_user_id(), '_number_orders', true ) );
$orders = $orders + 1;
update_user_meta( get_current_user_id(), '_number_orders', $orders );
}
add_action( 'woocommerce_payment_complete', 'so_27969258_track_orders_per_customer' );
这是完全未经测试的,因此请自担风险。此外,您可能希望在退款/取消等情况下考虑更改订单总数,但这似乎是一般要点。