Filtros e Ações do WP Discourse

Estas são todas as ações e filtros fornecidos pelo plugin WP Discourse. Os exemplos são apenas ilustrativos. Você precisará testar e validar o exemplo em sua própria instância antes de usá-lo em produção.

Filtros

Para uma explicação geral sobre como usar filtros no WordPress, consulte:

Publicação

Filtros de publicação do WP Discourse.

discourse_post_types_to_publish

Filtra os tipos de post que aparecem na lista de tipos de post da configuração “Tipos de Post para Publicar”. Observe que isso não habilita nem desabilita a publicação no Discourse para tipos de post.

Exemplo

Mostrar apenas o tipo “post”:

function filter_post_types(  $post_types ) {
  return array( 'post' );
}
add_filter( 'wp_discourse_publish_categories', 'filter_post_types', 10, 1);

wpdc_publish_private_post

Publicar posts privados do WordPress no Discourse.

Exemplo

function wpdc_custom_publish_private_post( $publish, $post_id ) {
  return 'private' === get_post_status( $post_id );
}
add_filter( 'wpdc_publish_private_post', 'wpdc_custom_publish_private_post', 10, 2 );

wpdc_publish_after_save

Determina se um post específico deve ser publicado no Discourse.

Exemplo

wp_discourse_before_xmlrpc_publish

Determina se um post específico deve ser publicado no Discourse usando xmlrpc.

Exemplo

Não publicar posts via xmlrpc que contenham “maçãs” no título.

function publish_after_save ( $publish_to_discourse, $post ) {
   return strpos($post->post_title, 'apples') !== false;
}
add_filter( 'wpdc_publish_after_save', 'publish_after_save', 10, 2 );

wpdc_publish_format_title

Modifica o título do tópico no Discourse.

Exemplo

wp_discourse_excerpt

Modifica o conteúdo dos posts sendo enviados ao Discourse.

Exemplo

wpdc_publish_post_category

Altera a categoria para a qual o post será publicado.

Exemplo

Publicar sempre os posts na categoria “Feedback do Site”.

function wpdc_change_post_category( $category, $post_id ) {
  $categories = WPDiscourse\Utilities\Utilities::get_discourse_categories();
  return array_search("Site Feedback", array_column($categories, 'name'));
}
add_filter( 'wpdc_publish_post_category', 'wpdc_change_post_category' );

wp_discourse_publish_categories

Filtra as categorias que aparecem na configuração de Categoria na barra lateral do WP Discourse ao criar ou editar um post do WordPress.

Exemplo

Mostrar apenas a categoria “Feedback do Site”:

function filter_categories(  $categories ) {
  return array_filter( $categories, function( $category ){
	return $category['name'] === 'Site Feedback';
  });
};
add_filter( 'wp_discourse_publish_categories', 'filter_categories', 10, 1);

wpdc_publish_unlisted

Determina se o post publicado estará como “não listado” no Discourse.

Exemplo

Publicar como não listado se o post tiver o termo “documento” na taxonomia do WordPress “knowledge_base”.

function wpdc_unlisted_for_site_feedback( $unlisted, $post, $post_id ) {
  return has_term( "document", "knowledge_base", $post ) || $unlisted;
}
add_filter( 'wpdc_publish_unlisted', 'wpdc_unlisted_for_site_feedback' );

wpdc_discourse_username

Define o nome de usuário no Discourse que será usado como autor do post no Discourse.

Exemplo

Definir “angus” como autor de todos os posts publicados no Discourse.

function wpdc_custom_username( $discourse_username, $author_id ) {
  return 'angus';
}
add_filter( 'wpdc_discourse_username', 'wpdc_custom_username' );

wpdc_publish_body

Modifica o corpo enviado ao criar ou atualizar posts.

Exemplo

Adicionar as tags tag1 e tag2 a todos os posts.

add_filter(  'wpdc_publish_body', function( $body, $remote_post_type ) {
   if ( 'create_post' === $remote_post_type ) {
      $body['tags'] = array( 'tag1', 'tag2' );
   }
   return $body;
}, 10, 2);

Configurações

Filtros de configuração do WP Discourse.

wpdc_utilities_options_array

Modifica qualquer configuração usada pelo WP Discourse no momento em que as configurações são utilizadas no código.

Exemplo

Definir automaticamente a URL do Discourse para https://wordpress.pavilion.tech, independentemente do que for inserido no painel de administração

function filter_network_url_setting(  $options) {
  $options["discourse_url"] = "https://wordpress.pavilion.tech";
  return $options;
}
add_filter( 'wpdc_utilities_options_array', 'filter_network_url_setting', 10, 1);

wpdc_validate_site_*

Filtra qualquer configuração de rede do WP Discourse ao usar uma rede multisite, usando o formato: wpdc_validate_site_[nome_configuracao_com_underline]

Exemplo

Definir automaticamente a URL do Discourse para https://wordpress.pavilion.tech, independentemente do que for inserido no painel de administração

function filter_multisite_network_url_setting(  $value ) {
  return "https://wordpress.pavilion.tech";
}
add_filter( 'wpdc_validate_site_url', 'filter_multisite_network_url_setting', 10, 1);

wpdc_category_cache_minutes

Duração do cache da lista de categorias. O padrão é 10 minutos.

Exemplo

Alterar o período de cache para 5 minutos.

function change_category_cache_minutes(  $default ) {
  return 5;
}
add_filter( 'wpdc_category_cache_minutes', 'change_category_cache_minutes', 10, 1);

Comentários

Filtros relacionados a comentários do Discourse no WordPress.

discourse_post_avatar_template_size

Define o tamanho do avatar usado nos comentários. Os tamanhos disponíveis são definidos na configuração do site avatar sizes do Discourse (padrão: 20|25|32|45|60|120).

Exemplo
function filter_avatar_size(  $size ) {
  return 32;
}
add_filter( 'discourse_post_avatar_template_size', 'filter_avatar_size', 10, 1);

wpdc_comment_body

Filtra o HTML do corpo do comentário.

Exemplo

discourse_participant_avatar_template_size

Define o tamanho dos avatares dos participantes (mesmas opções que discourse_post_avatar_template_size).

Exemplo
function filter_participant_avatar_size(  $size ) {
  return 20;
}
add_filter( 'discourse_participant_avatar_template_size', 'filter_participant_avatar_size', 10, 1);

wpdc_join_discussion_link_text

Define o texto do link “Participar da Discussão”. Use apenas se as Opções de Texto não forem adequadas.

Exemplo

wpdc_comment_sync_period

Define o período de sincronização para comentários em segundos. Padrão 600, ou seja, 10 minutos.

Exemplo

Definir o período de sincronização para 5 minutos.

function custom_comment_sync_period( $minutes, $post_id ) {
  return 300;
}
add_filter( 'wpdc_comment_sync_period', 'custom_comment_sync_period', 10, 2);

wpdc_single_page_comment_number_sync

Determina se deve recuperar as contagens de comentários do Discourse no agendamento regular de 10 minutos (retornar true) ou em um agendamento mais longo de 24 horas (retornar false), geralmente usado para páginas de arquivo (também pode ser definido usando o discourse_archive_page_sync_period, veja abaixo).

Exemplo

Sincronizar contagens de comentários a cada 10 minutos em posts e na página inicial, e a cada 24 horas em outras páginas.

function my_namespace_single_page_sync( $single_page, $post_id ) {
    return is_front_page() || is_single( $post_id );
}
add_filter( 'wpdc_single_page_comment_number_sync', 'my_namespace_single_page_sync', 10, 2 );

discourse_archive_page_sync_period

Define o período de sincronização da contagem de comentários na página de arquivo em segundos. Padrão 86400 (24 horas).

Exemplo

wpdc_load_comments_template_for_user

Determina se o modelo de comentários do WP Discourse será carregado para um usuário específico.

Exemplo

Não carregar os comentários para um usuário com o ID 1.

function load_comment_template_for_user( $load_template, $current_user, $post_id ) {
   return $current_user->ID !== 1;
add_filter( 'wpdc_load_comments_template_for_user', 'load_comment_template_for_user', 10, 3 );

wpdc_comments_count

Filtra a contagem de comentários para posts específicos.

Exemplo
function filter_comments_count( $count, $post_id, $discourse_post_id ) {
  ## Altere a contagem de comentários 
}
add_filter( 'wpdc_comments_count', 'filter_comments_count`, 10, 3 );

discourse_replies_html

Altera o HTML dos comentários.

Exemplo

discourse_no_replies_html

Altera o HTML exibido quando não há comentários.

Exemplo

discourse_no_connection_html

Altera o HTML exibido quando não há conexão com o Discourse.

Exemplo

discourse_comment_html

Altera o HTML de comentários individuais

Exemplo

discourse_participant_html

Altera o HTML dos participantes

Exemplo

discourse_publish_format_html

Altera o HTML dos detalhes do post do WordPress no conteúdo publicado no Discourse.

Exemplo

Provedor DiscourseConnect

Filtros do Provedor DiscourseConnect do WP Discourse.

discourse_email_verification

Determina se o Discourse precisa verificar o e-mail de um usuário ao fazer login com DiscourseConnect.

Exemplo

Exigir verificação de e-mail se o e-mail do usuário não for do domínio discourse.org.

function require_email_verification_for_external_domains( $require_activation, $user ) {
   $user_info = get_userdata( $user->ID );
   return strpos( $user_info->user_email, 'discourse.org' ) == false || $require_activation;

}
add_filter( 'discourse_email_verification', 'require_email_verification_for_external_domains`, 10, 2 );

wpdc_email_verification_not_verified

Filtra o resultado da verificação de e-mail quando falso.

Exemplo

Sempre retornar um resultado de verificação verdadeiro se o e-mail do usuário estiver no domínio discourse.org.

function wpdc_custom_email_verification_not_verified( $verified, $user_id) {
   $user_info = get_userdata( $user_id );
   return strpos( $user_info->user_email, 'discourse.org' ) !== false || $verified;
}
add_filter( 'wpdc_email_verification_not_verified', 'wpdc_custom_email_verification_not_verified`, 10, 2 );

wpdc_email_verification_verified

Filtra o resultado da verificação de e-mail quando verdadeiro.

Exemplo

Sempre retornar um resultado de verificação falso se o e-mail do usuário não estiver no domínio discourse.org.

function wpdc_custom_email_verification_verified( $verified, $user_id ) {
   $user_info = get_userdata( $user_id );
   return strpos( $user_info->user_email, 'discourse.org' ) !== false || false;
}
add_filter( 'wpdc_email_verification_verified', 'wpdc_custom_email_verification_verified`, 10, 2 );

wpdc_sso_avatar_url

Define a URL do avatar do usuário no Discourse ao fazer login com DiscourseConnect.

Exemplo

wpdc_sso_params

Altera os parâmetros DiscourseConnect enviados quando um usuário está fazendo login.

Exemplo

wpdc_bypass_sync_sso

Impede que a conta do WordPress de um usuário seja sincronizada com sua conta no Discourse.

Exemplo

wp_new_user_notification_email_admin

Filtra o conteúdo do e-mail de notificação de novo usuário enviado ao administrador do site.

Exemplo
function wp_custom_new_user_notification_email_admin(  $email_opts, $user, $blogname ) {
  ## Modifique o e-mail antes de ser enviado ao administrador.
}
add_filter( 'wp_new_user_notification_email_admin', 'wp_custom_new_user_notification_email_admin', 10, 2 );

wp_new_user_notification_email

Filtra o conteúdo do e-mail de notificação de novo usuário enviado ao novo usuário.

Exemplo
function wp_custom_new_user_notification_email(  $email_opts, $user, $blogname ) {
  ## Modifique o e-mail antes de ser enviado ao usuário.
}
add_filter( 'wp_new_user_notification_email', 'wp_custom_new_user_notification_email', 10, 2 );

Cliente DiscourseConnect

Filtros do Cliente DiscourseConnect do WP Discourse.

wpdc_sso_client_add_link_buttons_on_profile

Determina se deve mostrar um botão de link para a conta Discourse nos perfis dos usuários do WordPress.

Exemplo
function wpdc_dont_add_account_link_button( $add_button ) {
   return false;
}
add_filter( 'wpdc_sso_client_add_link_buttons_on_profile', 'wpdc_dont_add_account_link_button' );

wpdc_sso_client_updated_user

Filtra os dados do usuário do Discourse antes de atualizar o usuário do WordPress.

Exemplo

Garanta que a primeira letra do nome do usuário esteja em maiúscula.

function wpdc_ensure_capitalisation( $updated_user, $query ) {
   $updated_user['name'] = ucfirst( $updated_user['name'] );
   return $updated_user;
}
add_filter( 'wpdc_sso_client_updated_user', 'wpdc_dont_update_admin_users' );

wpdc_sso_client_redirect_after_login

Filtra o return_sso_url usado para redirecionar um usuário após um login bem-sucedido.

Exemplo

Sempre redirecionar os usuários para o “painel” após um login bem-sucedido.

function wpdc_always_redirect_to_dashboard( $return_sso_url ) {
   return "/dashboard";
}
add_filter( 'wpdc_sso_client_redirect_after_login', 'wpdc_always_redirect_to_dashboard' );

wpdc_sso_client_redirect_after_failed_login

Filtra o login_url usado para redirecionar um usuário após um login falho.

Exemplo

Sempre redirecionar os usuários para a página “ajuda” após um login mal-sucedido.

function wpdc_always_redirect_to_help( $redirect_url ) {
  return "/help";
}
add_filter('wpdc_sso_client_redirect_after_failed_login', 'wpdc_always_redirect_to_help');

wpdc_nonce_life

Define o tempo de expiração do nonce. O padrão é 10 minutos.

Exemplo

Definir o tempo de expiração do nonce para 5 minutos.

function wpdc_custom_nonce_life( $nonce_timeout ) {
  return 5;
}
add_filter( 'wpdc_nonce_life', 'wpdc_custom_nonce_life' );

wpdc_sso_client_login_anchor

Altera o texto exibido no link de login do Discourse mostrado no formulário de login do WordPress.

Exemplo

Alterar o texto para “Entrar com sua conta do fórum”.

function wpdc_custom_sso_client_login_anchor ( $login_text ) {
  return "Login with your forum account";
}
add_filter( 'wpdc_sso_client_login_anchor', 'wpdc_custom_sso_client_login_anchor' );

wpdc_sso_client_login_button

Altera o link de login do Discourse mostrado no formulário de login do WordPress.

Exemplo

Altere o elemento do link (adicionando classes e atributos de título).

function wpdc_custom_sso_client_login_button( $button, $sso_login_url, $link_options ) {
   return sprintf( '<a class="wpdc-sso-client-login-link" href="%s" class="discourse-login-link" title="%s">%s</a>', esc_url( $sso_login_url ), sanitize_text_field( "Click to login with Discourse" ), sanitize_text_field( "Login with Discourse" ) );
}
add_filter( 'wpdc_sso_client_login_button', 'wpdc_custom_sso_client_login_button', 10, 3 );

wpdc_sso_client_query

Adiciona uma string arbitrária à consulta que inicializa o DiscourseConnect para lidar com problemas de cache de página.

Exemplo

wpdc_sso_client_redirect_url

Filtra a URL de redirecionamento usada após o usuário fazer login.

Exemplo

Redirecionar os usuários para um painel após o login.

function wpdc_custom_sso_client_redirect_url( $encoded_url, $unencoded_url ) {
  return "/dashboard";
}
add_filter( 'wpdc_sso_client_redirect_url', 'wpdc_custom_sso_client_redirect_url', 10, 2);

Webhooks

Filtros de webhooks do WP Discourse.

wpdc_webhook_get_page_by_title_post_type

Altera o tipo de post usado para corresponder posts do WordPress e posts do Discourse. O padrão é “post”.

function wpdc_match_custom_posts( $post_type ) {
  return 'custom_post_type';
}
add_filter( 'wpdc_webhook_get_page_by_title_post_type', 'wpdc_match_custom_posts' );

wpdc_use_discourse_user_webhook

Determina se deve usar o webhook de usuário do Discourse.

Exemplo

Utilitários

Filtros que você pode usar com utilitários do WP Discourse.

wpdc_auto_create_user_require_activation

Determina quando um usuário criado pelo utilitário create_discourse_user requer ativação.

Exemplo

Ações

Para uma explicação geral sobre como usar ações no WordPress, consulte:

Configurações

Ações de configuração do WP Discourse.

wpdc_options_page_append_settings_tabs

Pode ser usado para adicionar abas secundárias às abas de configuração do WP Discourse.

Exemplo
function my_wp_discourse_setting_tab( $tab, $parent ) {
   ## Adicione sua aba.
}
add_action('wpdc_options_page_append_settings_tabs', 'my_wp_discourse_setting_tab', 10, 2);

wpdc_options_page_after_settings_tabs

Chamado após as abas de configurações.

Exemplo
function my_custom_wpdc_tab( $tab, $parent ) {
   ## Execute seu código de aba personalizado.
}
add_action( 'wpdc_options_page_after_settings_tabs', 'my_custom_wpdc_tab', 10, 2 );

wpdc_options_page_after_tab_switch

Chamado após uma aba do WP Discourse ser alternada.

Exemplo
function my_custom_wpdc_tab_switch( $tab ) {
   ## Execute seu código personalizado após a troca de aba
}
add_action( 'wpdc_options_page_after_tab_switch', 'my_custom_wpdc_tab_switch' );

wpdc_options_page_after_form

Chamado após o formulário de configurações do WP Discourse ser renderizado.

Exemplo
function my_custom_wpdc_options_page_after_form( $tab ) {
   ## Execute seu código personalizado após as configurações serem renderizadas.
}
add_action( 'wpdc_options_page_after_form', 'my_custom_wpdc_options_page_after_form' );

Comentários

Ações de Comentários do WP Discourse.

wp_discourse_after_comments

Executa após os comentários serem sincronizados.

Exemplo
function my_custom_comment_handling( $topic_id ) {
   ## Execute seu código personalizado após os comentários serem sincronizados.
}
add_action( 'wp_discourse_after_comments', 'my_custom_comment_handling' );

Provedor DiscourseConnect

Ações do Provedor DiscourseConnect do WP Discourse.

wpdc_after_sync_sso

Executa após um usuário ser sincronizado via DiscourseConnect.

Exemplo

wpdc_sso_provider_before_create_user

Executa antes que o usuário do Discourse seja criado.

Exemplo
function my_custom_user_handling( $user_login, $user ) {
   ## Execute seu código personalizado antes de um usuário ser criado
}
add_action( 'wpdc_sso_provider_before_create_user', 'my_custom_user_handling', 10, 2 );

wpdc_sso_before_login_redirect

Executa antes que um usuário seja redirecionado para o login do WordPress.

Exemplo
function my_custom_login_handling( $user_login, $user ) {
   ## Execute seu código personalizado antes de um usuário ser redirecionado para o login.
}
add_action( 'wpdc_sso_before_login_redirect', 'my_custom_login_handling', 10, 2 );

wpdc_sso_provider_before_sso_redirect

Executa antes que um usuário seja redirecionado de volta ao Discourse após o login no WordPress.

Exemplo

Cliente DiscourseConnect

Ações do Cliente DiscourseConnect do WP Discourse.

wpdc_sso_client_after_login_link

Executa após o link de login do Discourse ser renderizado.

Exemplo
function my_custom_login_html() {
   ## Adicione seu HTML personalizado
}
add_action( 'wpdc_sso_client_after_login_link', 'my_custom_login_html' );

wpdc_sso_client_after_create_user

Executa após um usuário do WordPress ser criado.

Exemplo
function wpdc_modify_wordpress_user( $user_id ) {
   ## Modifique o usuário do WordPress.
}
add_action( 'wpdc_sso_client_after_create_user', 'wpdc_modify_wordpress_user' );

wpdc_after_sso_client_user_update

Executa após um usuário do WordPress ser atualizado.

Exemplo
function wpdc_modify_wordpress_user_after_update( $user_id, $query ) {
   ## Modifique o usuário do WordPress.
}
add_action( 'wpdc_after_sso_client_user_update', 'wpdc_modify_wordpress_user_after_update' );

Webhooks

Ações de Webhook do WP Discourse.

wpdc_before_webhook_post_update

Executa antes que os dados do webhook de atualização de tópico recebidos do Discourse sejam processados.

Exemplo
function wpdc_before_webhook_post_update_changes( $json ) {
   ## Use o JSON recebido do Discourse.
}
add_action( 'wpdc_before_webhook_post_update', 'wpdc_modify_wordpress_user_after_update' );

wpdc_webhook_after_get_page_by_title

Executa após os posts serem correspondidos por título para o webhook de atualização de tópico.

Exemplo
function wpdc_webhook_custom_after_get_page_by_title( $title ) {
  ## Faça algo com o título correspondido.
}
add_action( 'wpdc_webhook_after_get_page_by_title', 'wpdc_webhook_custom_after_get_page_by_title' );

wpdc_webhook_user_created

Executa após um usuário ser criado pelo webhook de atualização de usuário.

Exemplo
function wpdc_webhook_user_created_action( $discourse_user ) {
  ## Faça algo com o usuário do Discourse.
}
add_action( 'wpdc_webhook_user_created', 'wpdc_webhook_user_created_action' );

wpdc_webhook_user_updated

Executa após um usuário ser atualizado pelo webhook de atualização de usuário.

Exemplo
function wpdc_webhook_user_updated_action( $discourse_user ) {
  ## Faça algo com o usuário do Discourse.
}
add_action( 'wpdc_webhook_user_updated', 'wpdc_webhook_user_updated_action' );

wpdc_webhook_before_update_user_data

Executa antes que os dados do usuário do WordPress sejam atualizados a partir dos dados do usuário do Discourse pelo webhook de atualização de usuário.

Exemplo
function wpdc_webhook_before_update_user_data_action( $wordpress_user, $discourse_user, $event_type ) {
  ## Faça algo com os usuários do WordPress ou do Discourse.
}
add_action( 'wpdc_webhook_before_update_user_data', 'wpdc_webhook_before_update_user_data_action' );
5 curtidas