Filtres et actions WP Discourse

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' );
5 « J'aime »