Общая сумма заказа на изменение в Woocommerce в зависимости от роли пользователя wholesale_customer - PullRequest
0 голосов
/ 05 марта 2020

У меня есть функция для изменения итоговой суммы после оформления клика пользователем;

add_action( 'woocommerce_checkout_create_order', 'change_total_on_checking', 20, 1 );
function change_total_on_checking( $order ) {
    // Get order total
    $total = $order->get_total();

    ## -- Make your checking and calculations -- ##
    $new_total = $total * 1.12; // <== Fake calculation

    // Set the new calculated total
    $order->set_total( $new_total );
}

Эта функция работает отлично, но мне нужно установить только новый итог , если роль пользователя = wholesale_customer

Я изменил эту функцию следующим образом

add_action( 'woocommerce_checkout_create_order', 'change_total_on_checking', 20, 1 );
function change_total_on_checking( $order ) {
    $order = new WC_Order($order_id);
    $total = $order->get_total();
    $user_meta = get_userdata($order->customer_user);
    $user_roles = $user_meta->roles;

 if ( in_array( 'wholesale_customer', $user_roles, true ) ) {
       $new_total = 1000; // <== Fake calculation
       $order->set_total( $new_total );
    }  
}

но не сработало. Мне нужно, чтобы эта функция действовала только для wholesale_customer. Как я могу это сделать? Спасибо за все ответы.

1 Ответ

0 голосов
/ 06 марта 2020

Вы близки к решению, попробуйте его таким образом.

function change_total_on_checking( $order ) {   
     // Get user
    $user = $order->get_user();

    // Get user roles
    $roles = ( array ) $user->roles;

    // User role = wholesale_customer
    if ( in_array( 'wholesale_customer', $roles ) ) {
        // New total
        $new_total = 1000;

        // Set the new calculated total
        $order->set_total( $new_total );
    }
}
add_action( 'woocommerce_checkout_create_order', 'change_total_on_checking', 20, 1 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...