除非我做错了什么,否则对 \"/groups/${group_id}/members.json\" 的请求有点不直观。它似乎也没有被记录下来,并且在提交群组页面上的 Discourse“添加用户”表单时,无法在浏览器的网络选项卡中查看。同样,我可能做错了什么。
无论如何,请求的路径是 /groups/${group_id}/members.json,其中 group_id 被替换为群组的数字 ID。 请求正文需要一个 group_id 参数,但该参数需要设置为群组的 name。因此,参数如下:
$group_id = 45;
$group_name = 'publishers';
$args = array(
'method' => 'DELETE', // or 'PUT'
'body' => array(
// 'group_id' => $group_name, edit: this param isn't needed, not sure what was going on when I was testing it.
'usernames' => 'sally,Ben',
)
);
// path:
/groups/${group_id}/members.json
如果您在 WordPress 网站上配置了 WP Discourse 插件,则可以使用其静态 discourse_request 帮助函数,避免使用 curl。请注意,我链接到 plugin-utilities 文件中的静态函数,但您需要为外部请求使用的命名空间来自 https://github.com/discourse/wp-discourse/blob/main/lib/utilities.php。
use WPDiscourse\\Utilities\\Utilities as DiscourseUtilities;
function zalg_add_users_to_group() {
$group_id = 45;
$group_name = 'publishers';
$method = 'PUT'; // 'PUT' to add users; 'DELETE' to remove users
$args = array(
'method' => $method,
'body' => array(
// 'group_id' => $group_name, edit: this param isn't needed
'usernames' => 'sally,Ben',
)
);
$response = DiscourseUtilities::discourse_request( "/groups/${group_id}/members.json", $args );
// return, log, or handle the response
}
如果您将 WordPress 用作 Discourse 的 SSO 提供商,则有一个帮助函数允许您将 一个 用户添加到一组或多组中:
function zalg_sso_add_users_to_group() {
$user_id = 1; // the user's WordPress user ID
$group_names = 'foo,bar,baz'; // one or more comma separated group names, with no spaces after commas!
DiscourseUtilities::add_user_to_discourse_group($user_id, $group_names);
}
要将多个用户添加到单个组,您仍然需要使用第一个代码示例中的 discourse_request 方法。