@s1mypj
Начинающий web-программист.

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

Доброго времени суток!
Возникла необходимость отлавливать момент регистрации при оплате через WooCommerce и задавать определённую роль пользователю, в зависимости от товара который он купил.
Подскажите нужные хуки и как это лучше реализовать, заранее спасибо!
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@s1mypj Автор вопроса
Начинающий web-программист.
Получилось изменить роль только в usersmeta, но тоже успех
function s1_change_role( $order_id ) {

    $order = new WC_Order( $order_id );
    $items = $order->get_items();

    foreach ( $items as $item ) {
        $product_name = $item['name'];
        $product_id = $item['product_id'];
        $product_variation_id = $item['variation_id'];

        if ( $order->user_id > 0 && $product_id == '522' ) {
            update_user_meta( $order->user_id, 'paying_customer', 1 );
            $user = new WP_User( $order->user_id );

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

            // Add role
            $user->add_role( 'Любитель' );
        }
        if ( $order->user_id > 0 && $product_id == '527' ) {
            update_user_meta( $order->user_id, 'paying_customer', 1 );
            $user = new WP_User( $order->user_id );

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

            // Add role
            $user->add_role( 'Клиент' );
        }
        if ( $order->user_id > 0 && $product_id == '528' ) {
            update_user_meta( $order->user_id, 'paying_customer', 1 );
            $user = new WP_User( $order->user_id );

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

            // Add role
            $user->add_role( 'VIP-Клиент' );
        }
    }
}

Всё понятно и просто, только вывод кривоват, как мне кажется, главное - работает)
$current_user_id = get_current_user_id();
	$user_info = get_userdata($current_user_id);

	$massiv = $user_info->caps;
	foreach($massiv as $key => $value)
	{
		if($key == 'Любитель'){
			echo 'Роль пользователя: ';
			echo substr($key, 3);
		}
		if($key == 'Клиент'){
			echo 'Роль пользователя: ';
			echo substr($key, 3);
		}
		if($key == 'VIP-Клиент'){
			echo 'Роль пользователя: ';
			echo substr($key, 3);
		}
	}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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