Как установить разные роли для определенных пользовательских ролей при покупке woocommerce? - PullRequest
0 голосов
/ 09 февраля 2019

У меня шесть различных пользовательских ролей - A, B, C, D, E и F. Я хочу назначить определенные роли A, B, C при покупке woocommerce.

Role A -> Role D
Role B -> Role E
Role C -> Role F

Обновление

Добавлен код, который я пробую, но он не меняет роли.

add_action( 'woocommerce_order_status_completed', 'custom_role_on_purchase', 100, 1 );
function custom_role_on_purchase( $order_id ) {
    $order = wc_get_order( $order_id );
    $user = $order->user_id;
    $user_meta = get_userdata( $order->user_id );
    $user_roles = $user_meta->roles;

    if ( in_array( 'Role A', $user_roles ) ) {
        $user->set_role( 'Role D' );
    } else if ( 'Role B', $user_roles ) ) {
        $user->set_role( 'Role E' );
    } else if ( 'Role C', $user_roles ) ) {
       $user->set_role( 'Role F' );
    } 
}

1 Ответ

0 голосов
/ 09 февраля 2019

Попробуйте этот код.

add_action( 'woocommerce_order_status_completed', 'custom_role_on_purchase', 100, 1 );
function custom_role_on_purchase( $order_id ) {
    $order = wc_get_order( $order_id );
    $user = $order->user_id;
    $user_meta = get_userdata( $order->user_id );
    $user_roles = $user_meta->roles;

    $Masteruser = new WP_User( $user_meta->ID );

    if ( in_array( 'Role A', $user_roles ) ) {
        $Masteruser->remove_role( 'Role A' );
        $Masteruser->set_role( 'Role D' );
    } else if ( in_array('Role B', $user_roles ) ) {
        $Masteruser->remove_role( 'Role E' );
        $Masteruser->set_role( 'Role E' );
    } else if ( in_array('Role C', $user_roles ) ) {
       $Masteruser->remove_role( 'Role F' );
       $Masteruser->set_role( 'Role F' );
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...