Woocommerce:如何为首单添加额外费用

Woocommerce: How to Add extra fee for First Order

仅当这是客户的第一笔订单时,我才尝试在总额 cart/order 中添加额外费用。

网上找了很多,还是没有找到具体的解决办法。

请某人suggest/guide 执行此操作的最佳解决方案。

谢谢

您使用购物车 class' 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' );

这完全未经测试,因此使用风险自负。此外,您可能想考虑在 refunds/cancellations 等情况下更改订单总数,但这似乎是一般要点。