@DimDim7778

Смена роли пользователя Woocommerce после покупки определённого товара, как сделать?

Здравствуйте, сделать смену роли после покупки определённого товара я смог при помощи вот этого кода:
add_action( 'woocommerce_order_status_completed', 'tb_change_role_on_purchase_vip' );

function tb_change_role_on_purchase_vip( $order_id ) {

// get order object and items
	$order = new WC_Order( $order_id );
	$items = $order->get_items();

	$product_id = 52; // Product ID

	foreach ( $items as $item ) {

		if( $product_id == $item['product_id'] && $order->user_id ) {
			$user = new WP_User( $order->user_id );

			// Remove old role
            $user->remove_role( 'customer' ); 

            // Add new role
            $user->add_role( 'pro_mem' );
		}
	}
}


и для второго товара

add_action( 'woocommerce_order_status_completed', 'tb_change_role_on_purchase_pro' );

function tb_change_role_on_purchase_pro( $order_id ) {

// get order object and items
	$order = new WC_Order( $order_id );
	$items = $order->get_items();

	$product_id = 53; // Product ID

	foreach ( $items as $item ) {

		if( $product_id == $item['product_id'] && $order->user_id ) {
			$user = new WP_User( $order->user_id );

			// Remove old role
            $user->remove_role( 'customer' ); 

            // Add new role
            $user->add_role( 'vip_mem' );
		}
	}
}


Теперь собственно мой вопрос:
Как сделать чтобы после покупки первого товара (id товара 52) когда уже роль стала:
pro_mem
Покупая второй товар (id товара 53) роль pro_mem менялась на следующую роль vip_mem ?

Прописать такой вариант кода, например:
add_action( 'woocommerce_order_status_completed', 'tb_change_role_on_purchase_vip' );

function tb_change_role_on_purchase_vip( $order_id ) {

// get order object and items
	$order = new WC_Order( $order_id );
	$items = $order->get_items();

	$product_id = 53; // Product ID

	foreach ( $items as $item ) {

		if( $product_id == $item['product_id'] && $order->user_id ) {
			$user = new WP_User( $order->user_id );

			// Remove old role
            $user->remove_role( 'pro_mem' ); 

            // Add new role
            $user->add_role( 'vip_mem' );
		}
	}
}

Я правильно сделал?

Или же просто добавить во второй код удаление ещё одной роли:
// Remove old role
            $user->remove_role( 'pro_mem' );

и тогда получится вот так:
add_action( 'woocommerce_order_status_completed', 'tb_change_role_on_purchase_vip' );

function tb_change_role_on_purchase_vip( $order_id ) {

// get order object and items
	$order = new WC_Order( $order_id );
	$items = $order->get_items();

	$product_id = 53; // Product ID

	foreach ( $items as $item ) {

		if( $product_id == $item['product_id'] && $order->user_id ) {
			$user = new WP_User( $order->user_id );

                          // Remove old role
            $user->remove_role( 'customer' ); 

			// Remove old role
            $user->remove_role( 'pro_mem' ); 

            // Add new role
            $user->add_role( 'vip_mem' );
		}
	}
}

То есть если пользователь только зашёл на сайт и покупает первый товар (id товара 52), то присваивается роль pro_mem а если потом покупает второй товар (id товара 53) роль pro_mem будет удаляться и меняться на vip_mem
Вроде всё правильно сделал. Надо будет проверить )
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы