Изменить роль пользователя на n-ом количестве заказов после успешного размещения заказа - PullRequest
0 голосов
/ 05 марта 2019

Ранее я реализовывал решение по изменению роли пользователя при регистрации, но, похоже, на этот раз чего-то не хватает.

Есть ли у кого-нибудь решение для этого, которое все еще работает или сможет указать мне правильное направление относительно того, что я пропускаю или делаю неправильно?

Это то, что я пробовал до сих пор.

add_action('woocommerce_thankyou', 'change_user_role_on_order_success');

function change_user_role_on_order_success($order_id ) {
 // Get all customer orders
    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => get_current_user_id(),
        'post_type'   => 'shop_order', // WC orders post type
        'post_status' => 'wc-completed' // Only orders with status "completed"
    ) );
    // Count number of orders
    $count = count( $customer_orders );

     // return "true" when customer has already one order
    if ( $count >= 1 ) {
        $user = new WP_User( $order->get_user_id() );

        // our new role name
        $role = 'editor';

        //set the new role to our customer
           $user->set_role($role);
    }
}

1 Ответ

0 голосов
/ 05 марта 2019

Возможно, вы могли бы попробовать вместо этого использовать крючок woocommerce_order_status_completed.Он должен сработать, как только ваш клиент действительно выполнит заказ, и избавит вас от необходимости проверять статус.

function change_user_role_on_order_status_completed( $order_id ) {

    $order = new WC_Order( $order_id );

    $user_id = $order->user_id;

    $total_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => $user_id,
        'post_type'   => 'shop_order',
    ) );

    if ( $total_orders > 1 ) {
        $user = new WP_User( $order->user_id );

        // Set role editor
        $user->set_role( 'editor' );
    }
}

add_action( 'woocommerce_order_status_completed', 'change_user_role_on_order_status_completed', 10, 1 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...