Voici l’ensemble des actions et filtres fournis par le plugin WP Discourse. Les exemples sont uniquement illustratifs. Vous devrez tester et valider l’exemple sur votre propre instance avant de l’utiliser en production.
Filtres
Pour une explication générale sur l’utilisation des filtres dans WordPress, consultez :
Publication
Filtres de publication de WP Discourse.
discourse_post_types_to_publish
Filtre les types de publication qui apparaissent dans la liste des types de publication du paramètre « Types de publication à publier ». Notez que cela n’activera ni ne désactivera la publication Discourse pour les types de publication.
Exemple
Afficher uniquement le type « 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
Publier les publications privées de WordPress sur Discourse.
Exemple
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
Détermine si une publication spécifique doit être publiée sur Discourse.
Exemple
wp_discourse_before_xmlrpc_publish
Détermine si une publication spécifique doit être publiée sur Discourse via xmlrpc.
Exemple
Ne pas publier les publications xmlrpc contenant « apples » dans le titre.
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
Modifier le titre du sujet Discourse.
Exemple
wp_discourse_excerpt
Modifier le contenu des publications envoyées à Discourse.
Exemple
wpdc_publish_post_category
Changer la catégorie dans laquelle la publication est publiée.
Exemple
Toujours publier les publications dans la catégorie « 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
Filtre les catégories qui apparaissent dans le paramètre Catégorie dans la barre latérale de WP Discourse lors de la création ou de la modification d’une publication WordPress.
Exemple
Afficher uniquement la catégorie « 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
Détermine si la publication publiée est non répertoriée sur Discourse.
Exemple
Publier en mode non répertorié si la publication contient le terme « document » dans la taxonomie 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
Définir le nom d’utilisateur Discourse comme auteur de la publication Discourse.
Exemple
Définir « angus » comme auteur de toutes les publications envoyées à Discourse.
function wpdc_custom_username( $discourse_username, $author_id ) {
return 'angus';
}
add_filter( 'wpdc_discourse_username', 'wpdc_custom_username' );
wpdc_publish_body
Modifier le corps envoyé lors de la création ou de la mise à jour des publications.
Exemple
Ajouter les balises tag1 et tag2 à chaque publication.
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);
Paramètres
Filtres des paramètres de WP Discourse.
wpdc_utilities_options_array
Modifier n’importe quel paramètre utilisé par WP Discourse au moment où les paramètres sont utilisés dans le code.
Exemple
Définir automatiquement l’URL de Discourse sur https://wordpress.pavilion.tech, peu importe ce qui est saisi dans le panneau d’administration
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_*
Filtrer n’importe quel paramètre réseau de WP Discourse lors de l’utilisation d’un réseau multisite, en utilisant le format : wpdc_validate_site_[nom_du_paramètre_avec_soulignement]
Exemple
Définir automatiquement l’URL de Discourse sur https://wordpress.pavilion.tech, peu importe ce qui est saisi dans le panneau d’administration
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
Durée de mise en cache de la liste des catégories. Par défaut, 10 minutes.
Exemple
Changer la période de cache à 5 minutes.
function change_category_cache_minutes( $default ) {
return 5;
}
add_filter( 'wpdc_category_cache_minutes', 'change_category_cache_minutes', 10, 1);
Commentaires
Filtres relatifs aux commentaires Discourse dans WordPress.
discourse_post_avatar_template_size
Définir la taille de l’avatar utilisé dans les commentaires. Les tailles disponibles sont définies dans le paramètre de site Discourse avatar sizes (par défaut : 20|25|32|45|60|120).
Exemple
function filter_avatar_size( $size ) {
return 32;
}
add_filter( 'discourse_post_avatar_template_size', 'filter_avatar_size', 10, 1);
wpdc_comment_body
Filtrer le HTML du corps du commentaire.
Exemple
discourse_participant_avatar_template_size
Définir la taille des avatars des participants (mêmes options que discourse_post_avatar_template_size).
Exemple
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
Définir le texte du lien « Rejoindre la discussion ». À utiliser uniquement si les options de texte ne sont pas appropriées.
Exemple
wpdc_comment_sync_period
Définir la période de synchronisation des commentaires en secondes. Par défaut 600, soit 10 minutes.
Exemple
Définir la période de synchronisation à 5 minutes.
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
Détermine s’il faut récupérer les comptes de commentaires Discourse selon l’horaire régulier de 10 minutes (renvoyer true) ou un horaire plus long de 24 heures (renvoyer false), généralement utilisé pour les pages d’archives (peut également être défini à l’aide de discourse_archive_page_sync_period, voir ci-dessous).
Exemple
Synchroniser les comptes de commentaires toutes les 10 minutes sur les publications et la page d’accueil, et toutes les 24 heures sur les autres pages.
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
Définir la période de synchronisation du nombre de commentaires sur la page d’archive en secondes. Par défaut 86400 (24 heures).
Exemple
wpdc_load_comments_template_for_user
Détermine si le modèle de commentaires de WP Discourse se charge pour un utilisateur spécifique.
Exemple
Ne pas charger les commentaires pour un utilisateur avec l’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
Filtrer le nombre de commentaires pour des publications spécifiques.
Exemple
function filter_comments_count( $count, $post_id, $discourse_post_id ) {
## Modifier le nombre de commentaires
}
add_filter( 'wpdc_comments_count', 'filter_comments_count`, 10, 3 );
discourse_replies_html
Modifier le HTML des commentaires.
Exemple
discourse_no_replies_html
Modifier le HTML affiché lorsqu’il n’y a pas de commentaires.
Exemple
discourse_no_connection_html
Modifier le HTML affiché lorsqu’il n’y a pas de connexion à Discourse.
Exemple
discourse_comment_html
Modifier le HTML des commentaires individuels
Exemple
discourse_participant_html
Modifier le HTML des participants
Exemple
discourse_publish_format_html
Modifier le HTML des détails de la publication WordPress dans le contenu publié sur Discourse.
Exemple
Fournisseur DiscourseConnect
Filtres du fournisseur DiscourseConnect de WP Discourse.
discourse_email_verification
Détermine si Discourse doit vérifier l’e-mail d’un utilisateur lors de la connexion avec DiscourseConnect.
Exemple
Exiger la vérification de l’e-mail si l’e-mail de l’utilisateur ne provient pas du domaine 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
Filtre le résultat de la vérification de l’e-mail lorsque faux.
Exemple
Toujours renvoyer un résultat de vérification vrai si l’e-mail de l’utilisateur est dans le domaine 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
Filtre le résultat de la vérification de l’e-mail lorsque vrai.
Exemple
Toujours renvoyer un résultat de vérification faux si l’e-mail de l’utilisateur n’est pas dans le domaine 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
Définir l’URL de l’avatar de l’utilisateur sur Discourse lors de la connexion avec DiscourseConnect.
Exemple
wpdc_sso_params
Modifier les paramètres DiscourseConnect envoyés lorsqu’un utilisateur se connecte.
Exemple
wpdc_bypass_sync_sso
Empêcher le compte WordPress d’un utilisateur d’être synchronisé avec son compte Discourse.
Exemple
wp_new_user_notification_email_admin
Filtre le contenu de l’e-mail de notification de nouvel utilisateur envoyé à l’administrateur du site.
Exemple
function wp_custom_new_user_notification_email_admin( $email_opts, $user, $blogname ) {
## Modifier l'e-mail avant qu'il ne soit envoyé à l'administrateur.
}
add_filter( 'wp_new_user_notification_email_admin', 'wp_custom_new_user_notification_email_admin', 10, 2 );
wp_new_user_notification_email
Filtre le contenu de l’e-mail de notification de nouvel utilisateur envoyé au nouvel utilisateur.
Exemple
function wp_custom_new_user_notification_email( $email_opts, $user, $blogname ) {
## Modifier l'e-mail avant qu'il ne soit envoyé à l'utilisateur.
}
add_filter( 'wp_new_user_notification_email', 'wp_custom_new_user_notification_email', 10, 2 );
Client DiscourseConnect
Filtres du client DiscourseConnect de WP Discourse.
wpdc_sso_client_add_link_buttons_on_profile
Détermine s’il faut afficher un bouton de lien de compte Discourse sur les profils des utilisateurs WordPress.
Exemple
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
Filtrer les données de l’utilisateur Discourse avant de mettre à jour l’utilisateur WordPress.
Exemple
S’assurer que la première lettre du nom de l’utilisateur est en majuscule.
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
Filtrer l’URL de retour_sso utilisée pour rediriger un utilisateur après une connexion réussie.
Exemple
Toujours rediriger les utilisateurs vers le « tableau de bord » après une connexion réussie.
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
Filtrer l’URL de connexion utilisée pour rediriger un utilisateur après un échec de connexion.
Exemple
Toujours rediriger les utilisateurs vers la page « aide » après un échec de connexion.
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
Définir le délai d’expiration du nonce. Par défaut, 10 minutes.
Exemple
Définir le délai d’expiration du nonce à 5 minutes.
function wpdc_custom_nonce_life( $nonce_timeout ) {
return 5;
}
add_filter( 'wpdc_nonce_life', 'wpdc_custom_nonce_life' );
wpdc_sso_client_login_anchor
Modifier le texte affiché sur le lien de connexion Discourse affiché dans le formulaire de connexion WordPress.
Exemple
Modifier le texte en « Se connecter avec votre compte de forum ».
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
Modifier le lien de connexion Discourse affiché dans le formulaire de connexion WordPress.
Exemple
Modifier l’élément de lien (ajout de classes et d’attributs de titre).
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
Ajouter une chaîne arbitraire à la requête qui initialise DiscourseConnect pour gérer les problèmes de mise en cache des pages.
Exemple
wpdc_sso_client_redirect_url
Filtrer l’URL de redirection utilisée après que l’utilisateur est connecté.
Exemple
Rediriger les utilisateurs vers un tableau de bord après la connexion.
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
Filtres webhooks de WP Discourse.
wpdc_webhook_get_page_by_title_post_type
Modifier le type de publication utilisé pour faire correspondre les publications WordPress et Discourse. Par défaut, c’est « 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
Détermine s’il faut utiliser le webhook utilisateur Discourse.
Exemple
Utilitaires
Filtres que vous pouvez utiliser avec les utilitaires de WP Discourse.
wpdc_auto_create_user_require_activation
Déterminer quand un utilisateur créé par l’utilitaire create_discourse_user nécessite une activation.
Exemple
Actions
Pour une explication générale sur l’utilisation des actions dans WordPress, consultez :
Paramètres
Actions des paramètres de WP Discourse.
wpdc_options_page_append_settings_tabs
Peut être utilisé pour ajouter des sous-onglets aux onglets de paramètres de WP Discourse.
Exemple
function my_wp_discourse_setting_tab( $tab, $parent ) {
## Ajouter votre onglet.
}
add_action('wpdc_options_page_append_settings_tabs', 'my_wp_discourse_setting_tab', 10, 2);
wpdc_options_page_after_settings_tabs
Appelé après les onglets de paramètres.
Exemple
function my_custom_wpdc_tab( $tab, $parent ) {
## Exécuter votre code d'onglet personnalisé.
}
add_action( 'wpdc_options_page_after_settings_tabs', 'my_custom_wpdc_tab', 10, 2 );
wpdc_options_page_after_tab_switch
Appelé après le changement d’un onglet WP Discourse.
Exemple
function my_custom_wpdc_tab_switch( $tab ) {
## Exécuter votre code personnalisé après le changement d'onglet
}
add_action( 'wpdc_options_page_after_tab_switch', 'my_custom_wpdc_tab_switch' );
wpdc_options_page_after_form
Appelé après le rendu du formulaire de paramètres de WP Discourse.
Exemple
function my_custom_wpdc_options_page_after_form( $tab ) {
## Exécuter votre code personnalisé après le rendu des paramètres.
}
add_action( 'wpdc_options_page_after_form', 'my_custom_wpdc_options_page_after_form' );
Commentaires
Actions des commentaires de WP Discourse.
wp_discourse_after_comments
Exécuter après la synchronisation des commentaires.
Exemple
function my_custom_comment_handling( $topic_id ) {
## Exécuter votre code personnalisé après la synchronisation des commentaires.
}
add_action( 'wp_discourse_after_comments', 'my_custom_comment_handling' );
Fournisseur DiscourseConnect
Actions du fournisseur DiscourseConnect de WP Discourse.
wpdc_after_sync_sso
Exécuter après la synchronisation d’un utilisateur via DiscourseConnect.
Exemple
wpdc_sso_provider_before_create_user
Exécuter avant la création de l’utilisateur Discourse.
Exemple
function my_custom_user_handling( $user_login, $user ) {
## Exécuter votre code personnalisé avant la création d'un utilisateur
}
add_action( 'wpdc_sso_provider_before_create_user', 'my_custom_user_handling', 10, 2 );
wpdc_sso_before_login_redirect
Exécuter avant la redirection d’un utilisateur vers la connexion WordPress.
Exemple
function my_custom_login_handling( $user_login, $user ) {
## Exécuter votre code personnalisé avant la redirection d'un utilisateur vers la connexion.
}
add_action( 'wpdc_sso_before_login_redirect', 'my_custom_login_handling', 10, 2 );
wpdc_sso_provider_before_sso_redirect
Exécuter avant la redirection d’un utilisateur vers Discourse après la connexion WordPress.
Exemple
Client DiscourseConnect
Actions du client DiscourseConnect de WP Discourse.
wpdc_sso_client_after_login_link
Exécuter après le rendu du lien de connexion Discourse.
Exemple
function my_custom_login_html() {
## Ajouter votre HTML personnalisé
}
add_action( 'wpdc_sso_client_after_login_link', 'my_custom_login_html' );
wpdc_sso_client_after_create_user
Exécuter après la création d’un utilisateur WordPress.
Exemple
function wpdc_modify_wordpress_user( $user_id ) {
## Modifier l'utilisateur WordPress.
}
add_action( 'wpdc_sso_client_after_create_user', 'wpdc_modify_wordpress_user' );
wpdc_after_sso_client_user_update
Exécuter après la mise à jour d’un utilisateur WordPress.
Exemple
function wpdc_modify_wordpress_user_after_update( $user_id, $query ) {
## Modifier l'utilisateur WordPress.
}
add_action( 'wpdc_after_sso_client_user_update', 'wpdc_modify_wordpress_user_after_update' );
Webhooks
Actions Webhook de WP Discourse.
wpdc_before_webhook_post_update
Exécuter avant le traitement des données du webhook de mise à jour du sujet reçues de Discourse.
Exemple
function wpdc_before_webhook_post_update_changes( $json ) {
## Utiliser le JSON reçu de Discourse.
}
add_action( 'wpdc_before_webhook_post_update', 'wpdc_modify_wordpress_user_after_update' );
wpdc_webhook_after_get_page_by_title
Exécuter après la correspondance des publications par titre pour le webhook de mise à jour du sujet.
Exemple
function wpdc_webhook_custom_after_get_page_by_title( $title ) {
## Faire quelque chose avec le titre correspondant.
}
add_action( 'wpdc_webhook_after_get_page_by_title', 'wpdc_webhook_custom_after_get_page_by_title' );
wpdc_webhook_user_created
Exécuter après la création d’un utilisateur par le webhook de mise à jour de l’utilisateur.
Exemple
function wpdc_webhook_user_created_action( $discourse_user ) {
## Faire quelque chose avec l'utilisateur Discourse.
}
add_action( 'wpdc_webhook_user_created', 'wpdc_webhook_user_created_action' );
wpdc_webhook_user_updated
Exécuter après la mise à jour d’un utilisateur par le webhook de mise à jour de l’utilisateur.
Exemple
function wpdc_webhook_user_updated_action( $discourse_user ) {
## Faire quelque chose avec l'utilisateur Discourse.
}
add_action( 'wpdc_webhook_user_updated', 'wpdc_webhook_user_updated_action' );
wpdc_webhook_before_update_user_data
Exécuter avant la mise à jour des données de l’utilisateur WordPress à partir des données de l’utilisateur Discourse par le webhook de mise à jour de l’utilisateur.
Exemple
function wpdc_webhook_before_update_user_data_action( $wordpress_user, $discourse_user, $event_type ) {
## Faire quelque chose avec les utilisateurs WordPress ou Discourse.
}
add_action( 'wpdc_webhook_before_update_user_data', 'wpdc_webhook_before_update_user_data_action' );