Adicionar Grupos e Categorias (com segurança) com WP-Discourse ou a API?

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).

Criando um grupo

O endpoint que você deseja é este: Discourse API Docs. Não há uma lista completa dos parâmetros na documentação da API, mas você os encontrará aqui: discourse/app/controllers/admin/groups_controller.rb at main · discourse/discourse · GitHub

Criando uma categoria

O endpoint que você deseja é este: Discourse API Docs. Da mesma forma, a lista completa de parâmetros está aqui: discourse/app/controllers/categories_controller.rb at main · discourse/discourse · GitHub

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,

{
  "cohort1": 2,
  "staff": 1
}

Você encontrará a lista de inteiros de nível de permissão aqui: discourse/app/models/category_group.rb at main · discourse/discourse · GitHub