Filtri e Azioni di WP Discourse

Questi sono tutti gli action e filter forniti dal plugin WP Discourse. Gli esempi sono puramente illustrativi. Dovrai testare e convalidare l’esempio sulla tua istanza prima di utilizzarlo in produzione.

Filter

Per una spiegazione generale su come utilizzare i filter in WordPress, vedi

Pubblicazione

Filter di pubblicazione di WP Discourse.

discourse_post_types_to_publish

Filtra i tipi di post che appaiono nell’elenco dei tipi di post nell’impostazione “Post Types to Publish”. Nota che questo non abilita o disabilita la pubblicazione su Discourse per i tipi di post.

Esempio

Mostra solo il 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

Pubblica post privati di WordPress su Discourse.

Esempio

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

Se un post specifico deve essere pubblicato su Discourse.

Esempio

wp_discourse_before_xmlrpc_publish

Se un post specifico deve essere pubblicato su Discourse utilizzando xmlrpc.

Esempio

Non pubblicare post xmlrpc con “mele” nel titolo.

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 il titolo del topic su Discourse.

Esempio

wp_discourse_excerpt

Modifica il contenuto dei post inviati a Discourse.

Esempio

wpdc_publish_post_category

Cambia la categoria in cui il post viene pubblicato.

Esempio

Pubblica sempre i post nella categoria “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 le categorie che appaiono nell’impostazione Categoria nella barra laterale di WP Discourse quando si crea o modifica un post di WordPress.

Esempio

Mostra solo la categoria “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

Determina se il post pubblicato è nascosto (unlisted) su Discourse.

Esempio

Pubblica come nascosto se il post ha il termine “document” nella tassonomia 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

Imposta il nome utente Discourse come autore del post su Discourse.

Esempio

Imposta “angus” come autore di tutti i post pubblicati su Discourse.

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

wpdc_publish_body

Modifica il corpo inviato durante la creazione o l’aggiornamento dei post.

Esempio

Aggiungi i tag tag1 e tag2 a ogni post.

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

Impostazioni

Filter delle impostazioni di WP Discourse.

wpdc_utilities_options_array

Modifica qualsiasi impostazione utilizzata da WP Discourse al momento in cui le impostazioni vengono utilizzate nel codice.

Esempio

Imposta automaticamente l’URL di Discourse su https://wordpress.pavilion.tech, indipendentemente da ciò che viene inserito nel pannello di amministrazione

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 qualsiasi impostazione di rete di WP Discourse quando si utilizza una rete multisito, utilizzando il formato: wpdc_validate_site_[nome_impostazione_con_sottolineatura]

Esempio

Imposta automaticamente l’URL di Discourse su https://wordpress.pavilion.tech, indipendentemente da ciò che viene inserito nel pannello di amministrazione

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

Durata della cache dell’elenco delle categorie. Il valore predefinito è 10 minuti.

Esempio

Cambia il periodo di cache a 5 minuti.

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

Commenti

Filter relativi ai commenti di Discourse in WordPress.

discourse_post_avatar_template_size

Imposta la dimensione dell’avatar utilizzato nei commenti. Le dimensioni disponibili sono definite nell’impostazione del sito avatar sizes di Discourse (predefinito: 20|25|32|45|60|120).

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

wpdc_comment_body

Filtra l’HTML del corpo del commento.

Esempio

discourse_participant_avatar_template_size

Imposta la dimensione degli avatar dei partecipanti (stesse opzioni di discourse_post_avatar_template_size).

Esempio
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

Imposta il testo del link “Unisciti alla discussione”. Utilizzare solo se le opzioni di testo non sono appropriate.

Esempio

wpdc_comment_sync_period

Imposta il periodo di sincronizzazione per i commenti in secondi. Predefinito 600, ovvero 10 minuti.

Esempio

Imposta il periodo di sincronizzazione a 5 minuti.

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 recuperare i conteggi dei commenti su Discourse con la pianificazione regolare di 10 minuti (restituire true) o con una pianificazione più lunga di 24 ore (restituire false), tipicamente utilizzata per le pagine di archivio (può anche essere impostata utilizzando discourse_archive_page_sync_period, vedi sotto).

Esempio

Sincronizza i conteggi dei commenti ogni 10 minuti sui post e sulla pagina principale e ogni 24 ore sulle altre pagine.

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

Imposta il periodo di sincronizzazione del conteggio dei commenti per la pagina di archivio in secondi. Predefinito 86400 (24 ore).

Esempio

wpdc_load_comments_template_for_user

Determina se il template dei commenti di WP Discourse viene caricato per un utente specifico.

Esempio

Non caricare i commenti per un utente con 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

Filtra il conteggio dei commenti per post specifici.

Esempio
function filter_comments_count( $count, $post_id, $discourse_post_id ) {
  ## Modifica il conteggio dei commenti
}
add_filter( 'wpdc_comments_count', 'filter_comments_count`, 10, 3 );

discourse_replies_html

Modifica l’HTML dei commenti.

Esempio

discourse_no_replies_html

Modifica l’HTML visualizzato quando non ci sono commenti.

Esempio

discourse_no_connection_html

Modifica l’HTML visualizzato quando non c’è connessione a Discourse.

Esempio

discourse_comment_html

Modifica l’HTML dei singoli commenti

Esempio

discourse_participant_html

Modifica l’HTML dei partecipanti

Esempio

discourse_publish_format_html

Modifica l’HTML dei dettagli del post WordPress nel contenuto pubblicato su Discourse.

Esempio

Provider DiscourseConnect

Filter del provider DiscourseConnect di WP Discourse.

discourse_email_verification

Determina se Discourse deve verificare l’email di un utente durante l’accesso con DiscourseConnect.

Esempio

Richiedi la verifica dell’email se l’email dell’utente non proviene dal 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 il risultato della verifica dell’email quando è falso.

Esempio

Restituisci sempre un risultato di verifica vero se l’email dell’utente è nel 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 il risultato della verifica dell’email quando è vero.

Esempio

Restituisci sempre un risultato di verifica falso se l’email dell’utente non è nel 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

Imposta l’URL dell’avatar dell’utente su Discourse durante l’accesso con DiscourseConnect.

Esempio

wpdc_sso_params

Modifica i parametri DiscourseConnect inviati quando un utente effettua l’accesso.

Esempio

wpdc_bypass_sync_sso

Impedisce che l’account WordPress di un utente venga sincronizzato con il suo account Discourse.

Esempio

wp_new_user_notification_email_admin

Filtra il contenuto dell’email di notifica per il nuovo utente inviata all’amministratore del sito.

Esempio
function wp_custom_new_user_notification_email_admin(  $email_opts, $user, $blogname ) {
  ## Modifica l'email prima che venga inviata all'amministratore.
}
add_filter( 'wp_new_user_notification_email_admin', 'wp_custom_new_user_notification_email_admin', 10, 2 );

wp_new_user_notification_email

Filtra il contenuto dell’email di notifica per il nuovo utente inviata al nuovo utente.

Esempio
function wp_custom_new_user_notification_email(  $email_opts, $user, $blogname ) {
  ## Modifica l'email prima che venga inviata all'utente.
}
add_filter( 'wp_new_user_notification_email', 'wp_custom_new_user_notification_email', 10, 2 );

Client DiscourseConnect

Filter del client DiscourseConnect di WP Discourse.

wpdc_sso_client_add_link_buttons_on_profile

Determina se mostrare un pulsante del link all’account Discourse sui profili degli utenti WordPress.

Esempio
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 i dati dell’utente Discourse prima di aggiornare l’utente WordPress.

Esempio

Assicurati che la prima lettera del nome dell’utente sia maiuscola.

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 l’URL di ritorno (return_sso_url) utilizzato per reindirizzare un utente dopo un accesso riuscito.

Esempio

Reindirizza sempre gli utenti alla “dashboard” dopo un accesso riuscito.

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 l’URL di login utilizzato per reindirizzare un utente dopo un accesso fallito.

Esempio

Reindirizza sempre gli utenti alla pagina “aiuto” dopo un accesso non riuscito.

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

Imposta il timeout del nonce. Il valore predefinito è 10 minuti.

Esempio

Imposta il timeout del nonce a 5 minuti.

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

wpdc_sso_client_login_anchor

Modifica il testo visualizzato sul link di accesso a Discourse mostrato nel modulo di accesso WordPress.

Esempio

Cambia il testo in “Accedi con il tuo account 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

Modifica il link di accesso a Discourse mostrato nel modulo di accesso WordPress.

Esempio

Modifica l’elemento del link (aggiungendo classi e attributi title).

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

Aggiunge una stringa arbitraria alla query che inizializza DiscourseConnect per gestire problemi di caching delle pagine.

Esempio

wpdc_sso_client_redirect_url

Filtra l’URL di reindirizzamento utilizzato dopo che l’utente ha effettuato l’accesso.

Esempio

Reindirizza gli utenti a una dashboard dopo l’accesso.

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

Webhook

Filter dei webhook di WP Discourse.

wpdc_webhook_get_page_by_title_post_type

Modifica il tipo di post utilizzato per abbinare i post WordPress e i post Discourse. Il valore predefinito è “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 utilizzare il webhook utente di Discourse.

Esempio

Utility

Filter che puoi utilizzare con le utility di WP Discourse.

wpdc_auto_create_user_require_activation

Determina quando un utente creato dall’utility create_discourse_user richiede l’attivazione.

Esempio

Action

Per una spiegazione generale su come utilizzare gli action in WordPress, vedi

Impostazioni

Action delle impostazioni di WP Discourse.

wpdc_options_page_append_settings_tabs

Può essere utilizzato per aggiungere sottovoci alle schede delle impostazioni di WP Discourse.

Esempio
function my_wp_discourse_setting_tab( $tab, $parent ) {
   ## Aggiungi la tua scheda.
}
add_action('wpdc_options_page_append_settings_tabs', 'my_wp_discourse_setting_tab', 10, 2);

wpdc_options_page_after_settings_tabs

Chiamato dopo le schede delle impostazioni.

Esempio
function my_custom_wpdc_tab( $tab, $parent ) {
   ## Esegui il codice della tua scheda personalizzata.
}
add_action( 'wpdc_options_page_after_settings_tabs', 'my_custom_wpdc_tab', 10, 2 );

wpdc_options_page_after_tab_switch

Chiamato dopo il cambio di una scheda di WP Discourse.

Esempio
function my_custom_wpdc_tab_switch( $tab ) {
   ## Esegui il tuo codice personalizzato dopo il cambio di scheda
}
add_action( 'wpdc_options_page_after_tab_switch', 'my_custom_wpdc_tab_switch' );

wpdc_options_page_after_form

Chiamato dopo il rendering del modulo delle impostazioni di WP Discourse.

Esempio
function my_custom_wpdc_options_page_after_form( $tab ) {
   ## Esegui il tuo codice personalizzato dopo il rendering delle impostazioni.
}
add_action( 'wpdc_options_page_after_form', 'my_custom_wpdc_options_page_after_form' );

Commenti

Action dei commenti di WP Discourse.

wp_discourse_after_comments

Eseguito dopo la sincronizzazione dei commenti.

Esempio
function my_custom_comment_handling( $topic_id ) {
   ## Esegui il tuo codice personalizzato dopo la sincronizzazione dei commenti.
}
add_action( 'wp_discourse_after_comments', 'my_custom_comment_handling' );

Provider DiscourseConnect

Action del provider DiscourseConnect di WP Discourse.

wpdc_after_sync_sso

Eseguito dopo che un utente è stato sincronizzato tramite DiscourseConnect.

Esempio

wpdc_sso_provider_before_create_user

Eseguito prima che l’utente Discourse venga creato.

Esempio
function my_custom_user_handling( $user_login, $user ) {
   ## Esegui il tuo codice personalizzato prima che un utente venga creato
}
add_action( 'wpdc_sso_provider_before_create_user', 'my_custom_user_handling', 10, 2 );

wpdc_sso_before_login_redirect

Eseguito prima che un utente venga reindirizzato all’accesso WordPress.

Esempio
function my_custom_login_handling( $user_login, $user ) {
   ## Esegui il tuo codice personalizzato prima che un utente venga reindirizzato all'accesso.
}
add_action( 'wpdc_sso_before_login_redirect', 'my_custom_login_handling', 10, 2 );

wpdc_sso_provider_before_sso_redirect

Eseguito prima che un utente venga reindirizzato a Discourse dopo l’accesso WordPress.

Esempio

Client DiscourseConnect

Action del client DiscourseConnect di WP Discourse.

wpdc_sso_client_after_login_link

Eseguito dopo il rendering del link di accesso a Discourse.

Esempio
function my_custom_login_html() {
   ## Aggiungi il tuo HTML personalizzato
}
add_action( 'wpdc_sso_client_after_login_link', 'my_custom_login_html' );

wpdc_sso_client_after_create_user

Eseguito dopo la creazione di un utente WordPress.

Esempio
function wpdc_modify_wordpress_user( $user_id ) {
   ## Modifica l'utente WordPress.
}
add_action( 'wpdc_sso_client_after_create_user', 'wpdc_modify_wordpress_user' );

wpdc_after_sso_client_user_update

Eseguito dopo l’aggiornamento di un utente WordPress.

Esempio
function wpdc_modify_wordpress_user_after_update( $user_id, $query ) {
   ## Modifica l'utente WordPress.
}
add_action( 'wpdc_after_sso_client_user_update', 'wpdc_modify_wordpress_user_after_update' );

Webhook

Action dei webhook di WP Discourse.

wpdc_before_webhook_post_update

Eseguito prima che i dati del webhook di aggiornamento topic ricevuti da Discourse vengano elaborati.

Esempio
function wpdc_before_webhook_post_update_changes( $json ) {
   ## Utilizza il JSON ricevuto da Discourse.
}
add_action( 'wpdc_before_webhook_post_update', 'wpdc_modify_wordpress_user_after_update' );

wpdc_webhook_after_get_page_by_title

Eseguito dopo che i post sono stati abbinati per titolo per il webhook di aggiornamento topic.

Esempio
function wpdc_webhook_custom_after_get_page_by_title( $title ) {
  ## Fai qualcosa con il titolo abbinato.
}
add_action( 'wpdc_webhook_after_get_page_by_title', 'wpdc_webhook_custom_after_get_page_by_title' );

wpdc_webhook_user_created

Eseguito dopo che un utente è stato creato dal webhook di aggiornamento utente.

Esempio
function wpdc_webhook_user_created_action( $discourse_user ) {
  ## Fai qualcosa con l'utente Discourse.
}
add_action( 'wpdc_webhook_user_created', 'wpdc_webhook_user_created_action' );

wpdc_webhook_user_updated

Eseguito dopo che un utente è stato aggiornato dal webhook di aggiornamento utente.

Esempio
function wpdc_webhook_user_updated_action( $discourse_user ) {
  ## Fai qualcosa con l'utente Discourse.
}
add_action( 'wpdc_webhook_user_updated', 'wpdc_webhook_user_updated_action' );

wpdc_webhook_before_update_user_data

Eseguito prima che i dati dell’utente WordPress vengano aggiornati dai dati dell’utente Discourse dal webhook di aggiornamento utente.

Esempio
function wpdc_webhook_before_update_user_data_action( $wordpress_user, $discourse_user, $event_type ) {
  ## Fai qualcosa con gli utenti WordPress o Discourse.
}
add_action( 'wpdc_webhook_before_update_user_data', 'wpdc_webhook_before_update_user_data_action' );
5 Mi Piace