Я пробовал, но этот метод не приостанавливает пользователя в Discourse, что означает, что он всё ещё будет получать посты на электронную почту и сможет взаимодействовать с форумом таким образом.
О, понятно. Не вижу, чтобы у плагина была функция приостановки пользователя (но возможно, я просто не знаю, где искать). В худшем случае вы можете добавить вызов API в хук, который срабатывает при сбое подписки, и использовать его для приостановки пользователя. Найти его можно здесь: Reverse engineer the Discourse API
Приостановка и возобновление доступа пользователей — это самая простая часть. Сложность заключается в том, чтобы определить, к каким действиям WooCommerce нужно подключить обработчики.
Похоже, что действие woocommerce_subscription_status_updated должно подойти. Этот хук передаёт три параметра: $subscription, $new_status, $old_status. Параметры статуса — это строки, поэтому их значение должно быть вполне понятным. Параметр $subscription — это объект WC_Subscription. Я предполагаю, что он содержит данные, позволяющие найти идентификатор пользователя, с которым связана подписка. Однако, чтобы подтвердить это, мне нужно будет заглянуть в код.
Параметры:$subscription Объект WC_Subscription, представляющий подписку, статус которой только что был изменён.
Описание: Это действие вызывается после того, как указанная в $subscription подписка перешла в статус «активна». Статус подписки мог измениться с «ожидает» на «активна», с «на удержании» на «активна» или с любого другого пользовательского статуса на «активна».
Параметры:$subscription Объект WC_Subscription, представляющий подписку, статус которой только что был изменён.
Описание: Это действие вызывается после изменения статуса указанной в $subscription подписки.
Статус подписки мог измениться с «ожидает» на «отменена», с «на удержании» на «отменена», с «ожидает отмены» на «отменена» или с любого другого пользовательского статуса на «отменена».
Параметры:$subscription Объект WC_Subscription, представляющий подписку, статус которой только что был изменён.
Описание: Вызывается, когда подписка достигает конца своего срока действия, если при покупке продукта подписки был установлен её срок или если для подписки была задана дата окончания.