大家好,我重新提起这个旧帖子,因为我的问题适用于 Restrict Content Pro,所以与原始发帖人的情况类似。基本上,我正在协助一个网站,其会员系统使用的是 Restrict Content Pro,我试图为付费的 RCP 会员集成 Discourse 群组同步功能——也就是说,任何拥有会员资格的用户都需要在 Discourse 论坛上同步到 Members 群组。
我花了很多时间尝试让类似 Simon 的 使用 WP Discourse SSO 管理 Discourse 群组会员资格 示例正常运行。目前 SSO 已经正常工作,但会员资格仍然没有同步(即在成功激活会员资格时将用户添加到群组,或在会员资格到期时将其从群组中移除)。
在这个帖子中,我只想实现将新用户添加到 Discourse 群组的功能。该网站的 Discourse 论坛只有一个群组——Members。(移除群组应该不难,因为 Restrict Content Pro 的钩子是相同的,只需将 active 后缀替换为 expired 即可。)Restrict Content Pro 列出了 rcp_transition_membership_status_active 动作钩子,该钩子在会员资格状态发生变化时触发。它包含 $old_status 和 $membership_id 参数。运行 rcp_get_membership() 会返回一个 RCP_Membership 对象(其中包含对 WordPress $user_id 的引用以及其他内容)。
以下是我整理出的最简化版本:
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
// 将用户添加到 'members' Discourse 群组。
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' );
}
如果您能看出我明显出错的地方,导致该动作无法正常运行,我将非常感谢您的帮助。谢谢!