Скидка на доставку в зависимости от ролей пользователей в Woocommerce - PullRequest
0 голосов
/ 19 ноября 2018

Я попытался реализовать фрагмент кода для functions.php, который будет применять 50% скидку к плате за доставку, когда роль «admin» и хочет скрыть ее, переходит в режим бесплатной доставки.

Это делаетне работает, как хотелось бы.Что я делаю не так?

add_action( 'woocommerce_cart_calculate_fees','discount_based_on_user_role_and_payment', 20, 1 );
function discount_based_on_user_role_and_payment( $cart) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
    return;
    $discount = WC()->cart->shipping_total/2;
if ( $discount >0 && !current_user_can('administrator') )
    return;
    $cart->add_fee( sprintf( __("Chiết khấu", "woocommerce")), -$discount, true );
}

Может кто-нибудь помочь завершить это?Или хотя бы указать правильное направление?

1 Ответ

0 голосов
/ 19 ноября 2018

Если вы добавите return; до добавления комиссии, ничего не произойдет.Вместо этого используйте эту слегка измененную версию кода:

add_action( 'woocommerce_cart_calculate_fees','discount_based_on_user_role_and_payment', 20, 1 );
function discount_based_on_user_role_and_payment( $cart) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return; 

    $discount = $cart->shipping_total / 2;

    if ( $discount > 0 && current_user_can('administrator') ) {
        $cart->add_fee( sprintf( __("Chiết khấu", "woocommerce")), -$discount, true );
    }
}

Код помещается в файл function.php вашей активной дочерней темы (активной темы).проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...