Executamos uma assinatura através do nosso sistema Wordpress/Woocommerce. Temos usado o Discourse em um subdomínio com o SSO há alguns anos e tem funcionado muito bem. Tenho código no meu arquivo de funções que adiciona/remove acesso a Grupos quando a pessoa entra/cancela, respectivamente.
Adicionamos um recurso em nossa assinatura onde as pessoas podem entrar em um pequeno grupo de 6-8 pessoas para chamadas semanais no Zoom.
Para gerenciar isso, criamos um Tipo de Postagem do WordPress chamado “Cohorts” que contém as informações das chamadas semanais e, em seguida, atribuímos esses Cohorts a um Usuário usando campos de usuário personalizados.
É isso que eu gostaria de fazer:
Criar um Grupo para cada um dos Cohorts
Criar uma Subcategoria para cada um dos Cohorts que apenas o Grupo do item #1 tenha acesso.
Colocar cada um dos Membros em seu respectivo Grupo, o que lhes dará acesso à sua subcategoria para seu Cohort.
Eu sei como fazer o #3, mas existe uma maneira de adicionar programaticamente Grupos e Subcategorias (com as configurações de segurança)?
Não consigo encontrar essa funcionalidade nas utilidades do WP-Discourse. Além disso, olhando a API, vejo onde adicionar categorias, mas não as funções de segurança.
Sim, é possível. Você pode fazer qualquer solicitação de API para o Discourse a partir do WordPress usando o método de utilidade discourse_request, ou seja,
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$args = array(
"body" => "",
"type" => "post"
);
$response = DiscourseUtilities::discourse_request( $path, $args );
Isso formatará a solicitação corretamente e usará a chave de API e o usuário que você forneceu nas configurações do WP Discourse. Você precisará de uma chave global para as ações a que se refere (se você também estiver usando a mesma chave para a funcionalidade normal do wp discourse).
Observe que as “configurações de segurança” são tratadas através do parâmetro permissions. Você só precisa fornecer um objeto com nomes de grupos como chaves e inteiros de nível de permissão como valores, por exemplo,
Desculpe Tim, estive fora nos últimos dias. Parece que o método discourse_request precisa de ajustes para dar suporte a isso. Farei um PR para isso na próxima semana e provavelmente levará mais uma semana para ser mesclado.
Se você quiser antes disso, pode usar os métodos WP subjacentes assim:
$api_credentials = DiscourseUtilities::get_api_credentials();
if ( is_wp_error( $api_credentials ) ) {
return $api_credentials;
}
$headers = array(
'Api-Key' => sanitize_key( $api_credentials['api_key'] ),
'Api-Username' => sanitize_text_field( $api_credentials['api_username'] ),
'Accept' => 'application/json',
);
$body = array( /* específico para o endpoint que você está usando */ );
$url = /* A URL absoluta para o endpoint que você está usando */ ;
$opts = array(
'headers' => $headers,
'body' => json_encode( $body ),
'method' => 'PUT'
);
$result = wp_remote_request( $url, $opts );
Olá @timgrahl, você seria capaz de compartilhar uma função funcional para Wordpress com Woocommerce para adicionar/remover usuários a grupos?
Estou usando Woocommerce com assinaturas e tentando fazer isso funcionar… se o usuário do Wordpress tiver uma assinatura ativa do Woocommerce, o usuário será adicionado ao grupo X… quando a assinatura for cancelada ou expirar, o usuário será removido do grupo X