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' );