Мы управляем подпиской через нашу систему WordPress/WooCommerce. Мы уже несколько лет используем Discourse на поддомене с SSO, и всё работает отлично. В файле функций у меня есть код, который добавляет или удаляет доступ к Группе при вступлении или отмене подписки соответственно.
Мы добавили функцию в нашу подписку, позволяющую пользователям объединяться в небольшие группы по 6–8 человек для еженедельных звонков в Zoom.
Для управления этим мы создали тип записи WordPress под названием «Группы» (Cohorts), в котором хранится информация о еженедельных звонках, и привязали эти группы к пользователям через пользовательские поля.
Вот что я хочу сделать:
Создать Группу для каждой из групп (Cohorts).
Создать подкатегорию для каждой из групп (Cohorts), доступ к которой имеют только участники Группы из пункта 1.
Добавить каждого участника в соответствующую Группу, что даст ему доступ к его подкатегории и возможность писать в ней для своей группы (Cohort).
Я знаю, как выполнить пункт 3, но есть ли способ программно добавлять Группы и подкатегории (с настройками безопасности)?
Я не могу найти эту функциональность в утилитах WP-Discourse. Также, изучая API, я вижу, где добавлять категории, но не функции безопасности.
Да, это возможно. Вы можете выполнить любой API-запрос к Discourse из WordPress, используя утилиту discourse_request, например:
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$args = array(
"body" => "",
"type" => "post"
);
$response = DiscourseUtilities::discourse_request( $path, $args );
Это правильно отформатирует запрос и использует API-ключ и пользователя, указанные в настройках плагина WP Discourse. Для действий, о которых вы упоминаете, вам понадобится глобальный ключ (если вы также используете тот же ключ для обычной функциональности WP Discourse).
Обратите внимание, что «настройки безопасности» обрабатываются через параметр permissions. Вам нужно передать объект, где ключами будут названия групп, а значениями — целые числа, обозначающие уровень доступа, например:
Извини, Тим, я был в отъезде последние несколько дней. Похоже, метод discourse_request нужно немного доработать, чтобы поддержать это. На следующей неделе я создам PR, и, вероятно, ещё потребуется неделя на его слияние.
Если тебе нужно это раньше, ты можешь использовать базовые методы WordPress следующим образом:
Привет, @timgrahl, не могли бы вы поделиться рабочим кодом функции для WordPress с WooCommerce для добавления/удаления пользователей в группы?
Я использую WooCommerce с членством и пытаюсь настроить это… если у пользователя WordPress есть активное членство в WooCommerce, то пользователь должен быть добавлен в группу X… когда членство отменяется или истекает, пользователь удаляется из группы X