Estas son todas las acciones y filtros proporcionados por el plugin WP Discourse. Los ejemplos son meramente ilustrativos. Deberás probar y validar el ejemplo en tu propia instancia antes de usarlo en producción.
Filtros
Para una explicación general sobre cómo puedes usar los filtros en WordPress, consulta:
Publicación
Filtros de publicación de WP Discourse.
discourse_post_types_to_publish
Filtra los tipos de publicación que aparecen en la lista de tipos de publicación de la configuración “Tipos de publicación para publicar”. Ten en cuenta que esto no habilitará ni deshabilitará la publicación en Discourse para los tipos de publicación.
Ejemplo
Mostrar solo el 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 publicaciones privadas de WordPress en Discourse.
Ejemplo
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 si una publicación específica debe publicarse en Discourse.
Ejemplo
wp_discourse_before_xmlrpc_publish
Determina si una publicación específica debe publicarse en Discourse usando xmlrpc.
Ejemplo
No publicar publicaciones xmlrpc con “manzanas” en el 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
Modificar el título del tema de Discourse.
Ejemplo
wp_discourse_excerpt
Modificar el contenido de las publicaciones que se envían a Discourse.
Ejemplo
wpdc_publish_post_category
Cambiar la categoría a la que se publica la publicación.
Ejemplo
Publicar siempre las publicaciones en la categoría “Site Feedback”.
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 las categorías que aparecen en la configuración de Categoría en la barra lateral de WP Discourse al crear o editar una publicación de WordPress.
Ejemplo
Mostrar solo la categoría “Site Feedback”:
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
Determinar si la publicación publicada está oculta en Discourse.
Ejemplo
Publicar como oculta si la publicación tiene el término “document” en la taxonomía de 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
Establecer el nombre de usuario de Discourse como el autor de la publicación de Discourse.
Ejemplo
Establecer “angus” como el autor de todas las publicaciones enviadas a Discourse.
function wpdc_custom_username( $discourse_username, $author_id ) {
return 'angus';
}
add_filter( 'wpdc_discourse_username', 'wpdc_custom_username' );
wpdc_publish_body
Modificar el cuerpo enviado al crear o actualizar publicaciones.
Ejemplo
Agregar las etiquetas tag1 y tag2 a cada publicación.
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);
Configuración
Filtros de configuración de WP Discourse.
wpdc_utilities_options_array
Modificar cualquier configuración utilizada por WP Discourse en el momento en que se usan las configuraciones en el código.
Ejemplo
Establecer automáticamente la URL de Discourse en https://wordpress.pavilion.tech, sin importar lo que se ingrese en el panel de administración.
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_*
Filtrar cualquier configuración de red de WP Discourse al usar una red multisitio, utilizando el formato: wpdc_validate_site_[nombre_de_configuración_con_guiones_bajos]
Ejemplo
Establecer automáticamente la URL de Discourse en https://wordpress.pavilion.tech, sin importar lo que se ingrese en el panel de administración.
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
Duración de la caché de la lista de categorías. El valor predeterminado es 10 minutos.
Ejemplo
Cambiar el período de caché a 5 minutos.
function change_category_cache_minutes( $default ) {
return 5;
}
add_filter( 'wpdc_category_cache_minutes', 'change_category_cache_minutes', 10, 1);
Comentarios
Filtros relacionados con los comentarios de Discourse en WordPress.
discourse_post_avatar_template_size
Establecer el tamaño del avatar utilizado en los comentarios. Los tamaños disponibles se establecen en la configuración del sitio de Discourse avatar sizes (predeterminado: 20|25|32|45|60|120).
Ejemplo
function filter_avatar_size( $size ) {
return 32;
}
add_filter( 'discourse_post_avatar_template_size', 'filter_avatar_size', 10, 1);
wpdc_comment_body
Filtrar el HTML del cuerpo del comentario.
Ejemplo
discourse_participant_avatar_template_size
Establecer el tamaño de los avatares de los participantes (las mismas opciones que discourse_post_avatar_template_size).
Ejemplo
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
Establecer el texto del enlace “Unirse a la discusión”. Úsalo solo si las opciones de texto no son adecuadas.
Ejemplo
wpdc_comment_sync_period
Establecer el período de sincronización para los comentarios en segundos. Predeterminado 600, es decir, 10 minutos.
Ejemplo
Establecer el período de sincronización a 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
Determinar si se deben recuperar los conteos de comentarios de Discourse en el programa regular de 10 minutos (devolver true) o en un programa más largo de 24 horas (devolver false), típicamente utilizado para páginas de archivo (también se puede establecer usando discourse_archive_page_sync_period, ver más abajo).
Ejemplo
Sincronizar los conteos de comentarios cada 10 minutos en las publicaciones y la página principal, y cada 24 horas en otras 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
Establecer el período de sincronización del conteo de comentarios de la página de archivo en segundos. Predeterminado 86400 (24 horas).
Ejemplo
wpdc_load_comments_template_for_user
Determinar si se carga la plantilla de comentarios de WP Discourse para un usuario específico.
Ejemplo
No cargar los comentarios para un usuario con el 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
Filtrar el conteo de comentarios para publicaciones específicas.
Ejemplo
function filter_comments_count( $count, $post_id, $discourse_post_id ) {
## Cambiar el conteo de comentarios
}
add_filter( 'wpdc_comments_count', 'filter_comments_count`, 10, 3 );
discourse_replies_html
Cambiar el HTML de los comentarios.
Ejemplo
discourse_no_replies_html
Cambiar el HTML mostrado cuando no hay comentarios.
Ejemplo
discourse_no_connection_html
Cambiar el HTML mostrado cuando no hay conexión con Discourse.
Ejemplo
discourse_comment_html
Cambiar el HTML de los comentarios individuales.
Ejemplo
discourse_participant_html
Cambiar el HTML de los participantes.
Ejemplo
discourse_publish_format_html
Cambiar el HTML de los detalles de la publicación de WordPress en el contenido publicado en Discourse.
Ejemplo
Proveedor de DiscourseConnect
Filtros del proveedor DiscourseConnect de WP Discourse.
discourse_email_verification
Determinar si Discourse necesita verificar el correo electrónico de un usuario al iniciar sesión con DiscourseConnect.
Ejemplo
Requerir verificación de correo electrónico si el correo electrónico del usuario no es del dominio 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 el resultado de la verificación de correo electrónico cuando es falso.
Ejemplo
Siempre devolver un resultado de verificación verdadero si el correo electrónico del usuario está en el dominio 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 el resultado de la verificación de correo electrónico cuando es verdadero.
Ejemplo
Siempre devolver un resultado de verificación falso si el correo electrónico del usuario no está en el dominio 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
Establecer la URL del avatar del usuario en Discourse al iniciar sesión con DiscourseConnect.
Ejemplo
wpdc_sso_params
Cambiar los parámetros de DiscourseConnect enviados cuando un usuario inicia sesión.
Ejemplo
wpdc_bypass_sync_sso
Evitar que la cuenta de WordPress de un usuario se sincronice con su cuenta de Discourse.
Ejemplo
wp_new_user_notification_email_admin
Filtra el contenido del correo electrónico de notificación de nuevo usuario enviado al administrador del sitio.
Ejemplo
function wp_custom_new_user_notification_email_admin( $email_opts, $user, $blogname ) {
## Modificar el correo electrónico antes de enviarlo al administrador.
}
add_filter( 'wp_new_user_notification_email_admin', 'wp_custom_new_user_notification_email_admin', 10, 2 );
wp_new_user_notification_email
Filtra el contenido del correo electrónico de notificación de nuevo usuario enviado al nuevo usuario.
Ejemplo
function wp_custom_new_user_notification_email( $email_opts, $user, $blogname ) {
## Modificar el correo electrónico antes de enviarlo al usuario.
}
add_filter( 'wp_new_user_notification_email', 'wp_custom_new_user_notification_email', 10, 2 );
Cliente de DiscourseConnect
Filtros del cliente DiscourseConnect de WP Discourse.
wpdc_sso_client_add_link_buttons_on_profile
Determinar si se debe mostrar un botón de enlace a la cuenta de Discourse en los perfiles de los usuarios de WordPress.
Ejemplo
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
Filtrar los datos del usuario de Discourse antes de actualizar el usuario de WordPress.
Ejemplo
Asegurarse de que la primera letra del nombre del usuario esté en mayú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
Filtrar la URL de retorno_sso utilizada para redirigir a un usuario después de un inicio de sesión exitoso.
Ejemplo
Siempre redirigir a los usuarios al “panel de control” después de un inicio de sesión exitoso.
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
Filtrar la URL de inicio de sesión utilizada para redirigir a un usuario después de un inicio de sesión fallido.
Ejemplo
Siempre redirigir a los usuarios a la página de “ayuda” después de un inicio de sesión fallido.
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
Establecer el tiempo de espera del nonce. El valor predeterminado es 10 minutos.
Ejemplo
Establecer el tiempo de espera del nonce a 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
Cambiar el texto mostrado en el enlace de inicio de sesión de Discourse que aparece en el formulario de inicio de sesión de WordPress.
Ejemplo
Cambiar el texto a “Iniciar sesión con tu cuenta del foro”.
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
Cambiar el enlace de inicio de sesión de Discourse que aparece en el formulario de inicio de sesión de WordPress.
Ejemplo
Cambiar el elemento del enlace (agregando clases y 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
Agregar una cadena arbitraria a la consulta que inicializa DiscourseConnect para manejar problemas de almacenamiento en caché de páginas.
Ejemplo
wpdc_sso_client_redirect_url
Filtrar la URL de redirección utilizada después de que el usuario ha iniciado sesión.
Ejemplo
Redirigir a los usuarios a un panel de control después del inicio de sesión.
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 de WP Discourse.
wpdc_webhook_get_page_by_title_post_type
Cambiar el tipo de publicación utilizado para coincidir con las publicaciones de WordPress y las publicaciones de Discourse. El valor predeterminado es “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
Determinar si se debe usar el webhook de usuario de Discourse.
Ejemplo
Utilidades
Filtros que puedes usar con las utilidades de WP Discourse.
wpdc_auto_create_user_require_activation
Determinar cuándo un usuario creado por la utilidad create_discourse_user requiere activación.
Ejemplo
Acciones
Para una explicación general sobre cómo usar acciones en WordPress, consulta:
Configuración
Acciones de configuración de WP Discourse.
wpdc_options_page_append_settings_tabs
Se puede usar para agregar subpestañas a las pestañas de configuración de WP Discourse.
Ejemplo
function my_wp_discourse_setting_tab( $tab, $parent ) {
## Agrega tu pestaña.
}
add_action('wpdc_options_page_append_settings_tabs', 'my_wp_discourse_setting_tab', 10, 2);
wpdc_options_page_after_settings_tabs
Se llama después de las pestañas de configuración.
Ejemplo
function my_custom_wpdc_tab( $tab, $parent ) {
## Ejecuta tu código de pestaña personalizado.
}
add_action( 'wpdc_options_page_after_settings_tabs', 'my_custom_wpdc_tab', 10, 2 );
wpdc_options_page_after_tab_switch
Se llama después de cambiar una pestaña de WP Discourse.
Ejemplo
function my_custom_wpdc_tab_switch( $tab ) {
## Ejecuta tu código personalizado después de cambiar la pestaña.
}
add_action( 'wpdc_options_page_after_tab_switch', 'my_custom_wpdc_tab_switch' );
wpdc_options_page_after_form
Se llama después de que se renderiza el formulario de configuración de WP Discourse.
Ejemplo
function my_custom_wpdc_options_page_after_form( $tab ) {
## Ejecuta tu código personalizado después de que se renderizan las configuraciones.
}
add_action( 'wpdc_options_page_after_form', 'my_custom_wpdc_options_page_after_form' );
Comentarios
Acciones de comentarios de WP Discourse.
wp_discourse_after_comments
Ejecutar después de que se sincronizan los comentarios.
Ejemplo
function my_custom_comment_handling( $topic_id ) {
## Ejecuta tu código personalizado después de que se sincronizan los comentarios.
}
add_action( 'wp_discourse_after_comments', 'my_custom_comment_handling' );
Proveedor de DiscourseConnect
Acciones del proveedor DiscourseConnect de WP Discourse.
wpdc_after_sync_sso
Ejecutar después de que un usuario se sincroniza a través de DiscourseConnect.
Ejemplo
wpdc_sso_provider_before_create_user
Ejecutar antes de que se cree el usuario de Discourse.
Ejemplo
function my_custom_user_handling( $user_login, $user ) {
## Ejecuta tu código personalizado antes de crear un usuario.
}
add_action( 'wpdc_sso_provider_before_create_user', 'my_custom_user_handling', 10, 2 );
wpdc_sso_before_login_redirect
Ejecutar antes de que un usuario sea redirigido al inicio de sesión de WordPress.
Ejemplo
function my_custom_login_handling( $user_login, $user ) {
## Ejecuta tu código personalizado antes de que un usuario sea redirigido al inicio de sesión.
}
add_action( 'wpdc_sso_before_login_redirect', 'my_custom_login_handling', 10, 2 );
wpdc_sso_provider_before_sso_redirect
Ejecutar antes de que un usuario sea redirigido de vuelta a Discourse después del inicio de sesión en WordPress.
Ejemplo
Cliente de DiscourseConnect
Acciones del cliente DiscourseConnect de WP Discourse.
wpdc_sso_client_after_login_link
Ejecutar después de que se renderiza el enlace de inicio de sesión de Discourse.
Ejemplo
function my_custom_login_html() {
## Agrega tu HTML personalizado.
}
add_action( 'wpdc_sso_client_after_login_link', 'my_custom_login_html' );
wpdc_sso_client_after_create_user
Ejecutar después de que se crea un usuario de WordPress.
Ejemplo
function wpdc_modify_wordpress_user( $user_id ) {
## Modifica el usuario de WordPress.
}
add_action( 'wpdc_sso_client_after_create_user', 'wpdc_modify_wordpress_user' );
wpdc_after_sso_client_user_update
Ejecutar después de que se actualiza un usuario de WordPress.
Ejemplo
function wpdc_modify_wordpress_user_after_update( $user_id, $query ) {
## Modifica el usuario de WordPress.
}
add_action( 'wpdc_after_sso_client_user_update', 'wpdc_modify_wordpress_user_after_update' );
Webhooks
Acciones de webhooks de WP Discourse.
wpdc_before_webhook_post_update
Ejecutar antes de que se procesen los datos del webhook de actualización de temas recibidos de Discourse.
Ejemplo
function wpdc_before_webhook_post_update_changes( $json ) {
## Usa el JSON recibido de Discourse.
}
add_action( 'wpdc_before_webhook_post_update', 'wpdc_modify_wordpress_user_after_update' );
wpdc_webhook_after_get_page_by_title
Ejecutar después de que se coincidan las publicaciones por título para el webhook de actualización de temas.
Ejemplo
function wpdc_webhook_custom_after_get_page_by_title( $title ) {
## Haz algo con el título coincidente.
}
add_action( 'wpdc_webhook_after_get_page_by_title', 'wpdc_webhook_custom_after_get_page_by_title' );
wpdc_webhook_user_created
Ejecutar después de que se crea un usuario por el webhook de actualización de usuario.
Ejemplo
function wpdc_webhook_user_created_action( $discourse_user ) {
## Haz algo con el usuario de Discourse.
}
add_action( 'wpdc_webhook_user_created', 'wpdc_webhook_user_created_action' );
wpdc_webhook_user_updated
Ejecutar después de que se actualiza un usuario por el webhook de actualización de usuario.
Ejemplo
function wpdc_webhook_user_updated_action( $discourse_user ) {
## Haz algo con el usuario de Discourse.
}
add_action( 'wpdc_webhook_user_updated', 'wpdc_webhook_user_updated_action' );
wpdc_webhook_before_update_user_data
Ejecutar antes de que se actualicen los datos del usuario de WordPress con los datos del usuario de Discourse por el webhook de actualización de usuario.
Ejemplo
function wpdc_webhook_before_update_user_data_action( $wordpress_user, $discourse_user, $event_type ) {
## Haz algo con los usuarios de WordPress o Discourse.
}
add_action( 'wpdc_webhook_before_update_user_data', 'wpdc_webhook_before_update_user_data_action' );