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

Для решения данной задачи вам потребуется добавить некоторый код в файл functions.php вашей активной темы WordPress.

Первым делом, необходимо определить, каким именно товаром интересуется пользователь после покупки. Затем вы можете использовать WordPress hook 'woocommerce_thankyou', который срабатывает после успешного завершения покупки, чтобы получить информацию о заказе и проверить, содержит ли он указанный вами товар.

Приведу пример кода, который выполняет эту задачу:

// Функция, которая будет вызываться после события 'woocommerce_thankyou'
function change_user_role_after_purchase($order_id) {
   // Получение объекта заказа по ID
   $order = wc_get_order($order_id);
  
   // Проверка, содержит ли заказ нужный товар
   if (contains_specific_product($order)) {
     // Получение пользователя, сделавшего заказ
     $user_id = $order->get_user_id();
     $user = new WP_User($user_id);
     
     // Установка новой роли для пользователя
     $user->set_role('новая-роль');
     
     // Сохранение изменений
     $user->save();
   }
}

// Функция для проверки, содержит ли заказ определенный товар
function contains_specific_product($order) {
   // Идентификатор товара, который вам интересен
   $product_id = 123;
   
   // Проверка, является ли текущий заказ в ожидании, обработке или выполнен
   if (in_array($order->get_status(), array('pending', 'processing', 'completed'))) {
      // Проверка каждого элемента в заказе на наличие нужного товара
      foreach ($order->get_items() as $item) {
         if ($item->get_product_id() == $product_id) {
            return true;
         }
      }
   }
   
   return false;
}

// Добавление хука после события 'woocommerce_thankyou'
add_action('woocommerce_thankyou', 'change_user_role_after_purchase');

Обратите внимание, что вам нужно будет заменить 'новая-роль' на желаемую вами новую роль пользователя, а также '123' на идентификатор товара, который должен срабатывать для изменения роли пользователя.

Когда пользователь успешно завершит покупку указанного товара, его роль будет автоматически изменена на указанную роль.

Не забудьте проверить код на тестовом сайте, прежде чем применять его на рабочем сайте.