Woocommerce - 通过挂钩更改运费(functions.php)

Efb*_*fbi 0 wordpress hook woocommerce

我正在使用带有会员资格的 Woocommerce 订阅,并且我想根据我的用户的会员计划对运费应用一些折扣。例如,银卡会员所有运输方式均可享受-30% 的折扣。要检查我使用的当前会员计划:

$user_id = get_current_user_id();// Get current user ID

if ( wc_memberships_is_user_active_member( $user_id, 'silver' ) ) {
    //echo 'This is a special message only for Silver members!';
} else {
    //echo 'I\'m sorry, you are not a silver member. There\'s nothing here for you!';
}
Run Code Online (Sandbox Code Playgroud)

但我没有找到任何方法可以通过功能来改变运费。

是否可以 ?谢谢

Rei*_*gel 7

我在这里写了一些示例: http: //reigelgallarde.me/programming/woocommerce-shipping-fee-changes-condition-met/

add_filter( 'woocommerce_package_rates', 'woocommerce_package_rates' );
function woocommerce_package_rates( $rates ) {
    $user_id = get_current_user_id();
    if ( ! wc_memberships_is_user_active_member( $user_id, 'silver' ) ) { return $rates; }
    $discount_amount = 30; // 30%

    foreach($rates as $key => $rate ) {
        $rates[$key]->cost = $rates[$key]->cost - ( $rates[$key]->cost * ( $discount_amount/100 ) );
    }

    return $rates;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码将满足您对所有运输方式的要求。