Woocommerce:如何为First Order增加额外费用

时间:2015-01-15 17:21:58

标签: php wordpress wordpress-plugin woocommerce

我正在尝试在购物车/订单总额中添加额外费用,只有这是客户的第一笔订单。

我在网上搜索了很多,但我还没有找到任何具体的解决方案。

请有人建议/指导最好的解决方案。

由于

1 个答案:

答案 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' );

这是完全未经测试的,因此请自担风险。此外,您可能希望在退款​​/取消等情况下考虑更改订单总数,但这似乎是一般要点。