Wordpress SSO - Restrict Content / user levels / groups

Привет, ребята, я воскрешаю эту старую тему, потому что мой вопрос касается Restrict Content Pro, поэтому он похож на вопрос автора оригинального поста (OP). По сути, я помогаю с сайтом, где система членства — Restrict Content Pro, и пытаюсь настроить синхронизацию групп Discourse для платных членств RCP. В частности, нужно, чтобы любой пользователь с активным членством синхронизировался с группой Members на форуме Discourse.

Я потратил много времени, пытаясь запустить что-то вроде примера Саймона Управление членством в группах Discourse с помощью WP Discourse SSO. SSO работает нормально, но членства всё ещё не синхронизируются (добавление пользователей в группу при успешной активации членства или удаление из группы при истечении срока действия).

В этом посте я пока просто пытаюсь добиться того, чтобы новые пользователи добавлялись в группу Discourse. На форуме Discourse этого сайта есть только одна группа — Members. (Удаление из групп должно быть достаточно простым, так как хук Restrict Content Pro тот же, нужно лишь заменить суффикс active на expired. Хук действия rcp_transition_membership_status_active в Restrict Content Pro срабатывает при изменении статуса членства. Он принимает параметры $old_status и $membership_id. Функция rcp_get_membership() возвращает объект RCP_Membership (который содержит, среди прочего, ссылку на $user_id WordPress).

Вот максимально упрощённая версия кода, которую я смог составить:


use WPDiscourse\Utilities\Utilities as DiscourseUtilities;

// Добавляет пользователя в группу Discourse 'members'.
function rcpdc_add_member_to_group( $membership_id ) {
    $membership = rcp_get_membership( $membership_id );
    $user_id = $membership->get_user_id();
    DiscourseUtilities::add_user_to_discourse_group( $user_id, 'Members' );
}

// Убедитесь, что класс Discourse существует.
if ( class_exists( '\WPDiscourse\Discourse\Discourse' ) ) {
    // Действие rcp с суффиксом {active} срабатывает при добавлении нового членства
    add_action( 'rcp_transition_membership_status_active', 'rcpdc_add_member_to_group' );
}

Если вы видите очевидную ошибку, из-за которой это действие не выполняется корректно, буду очень признателен за помощь. Спасибо!