Vous pouvez utiliser le plugin WP Discourse pour publier des articles WordPress sur votre Discourse afin que votre communauté puisse discuter de votre contenu WordPress. Avant de configurer la publication, vous devez d’abord installer le plugin WP Discourse sur WordPress et le connecter à votre Discourse. Si vous êtes prêt à commencer, regardez cette courte vidéo ou suivez les instructions ci-dessous.
Étape suivante
Une fois la publication configurée, vous souhaiterez peut-être consulter les sujets suivants :
- Utiliser Discourse pour les commentaires WordPress
- Se connecter à Discourse avec WordPress (DiscourseConnect)
Instructions
Paramètres de publication
Assurez-vous toujours d’enregistrer vos paramètres après les avoir modifiés. Cliquez sur le bouton « Enregistrer les options » en bas de la page.
Les paramètres devraient être relativement explicites. Si vous rencontrez des difficultés pour comprendre l’un d’eux, veuillez répondre à ce sujet pour obtenir des éclaircissements supplémentaires.
Catégorie Discourse par défaut
Définit la catégorie par défaut dans laquelle vos articles seront publiés sur Discourse. Ce paramètre peut être remplacé pour des articles individuels sur l’écran de création d’article WordPress.
Afficher les sous-catégories
Indique si vous souhaitez que les sous-catégories de votre forum soient disponibles en tant que catégories vers lesquelles vous pouvez publier depuis WordPress. Vous devrez enregistrer ce paramètre avant que les sous-catégories ne deviennent disponibles dans le champ de saisie de la catégorie Discourse par défaut.
Forcer la mise à jour de la catégorie
À utiliser lorsque vous avez ajouté de nouvelles catégories à votre forum et que vous souhaitez qu’elles soient disponibles sur votre site WordPress. L’activation de ce paramètre et l’enregistrement de la page d’options effectuent un appel API unique vers Discourse pour récupérer les catégories Discourse. Après l’avoir activé, la prochaine fois que vous reviendrez sur l’onglet Commentaire, vous constaterez que le paramètre est désactivé.
Autoriser les balises
Activez cette option si vous souhaitez ajouter des balises aux sujets Discourse créés via WordPress.
Publier en tant que sujets non répertoriés
Fera en sorte que les articles publiés depuis WordPress soient non répertoriés sur Discourse. Si vous activez le paramètre de webhook « Synchroniser les données des commentaires », les articles non répertoriés deviendront visibles dès qu’ils recevront leur première réponse sur Discourse.
Utiliser le contenu complet de l’article
Permet de publier le contenu complet des articles WordPress, plutôt que des extraits, sur votre forum Discourse. Pour éviter que le bouton « Afficher l’article complet » n’apparaisse sous votre article sur Discourse, vous devez désactiver le paramètre de site « tronquer l’intégration » sur Discourse (trouvé à l’adresse votreforum.com/admin/site_settings/category/posting).
Longueur d’extrait personnalisée
Si vous n’avez pas sélectionné le paramètre « Utiliser le contenu complet de l’article », ce paramètre créera des extraits de cette longueur à publier sur Discourse. Vous pouvez également créer manuellement des extraits lors de la création d’un article WordPress en ajoutant l’extrait à la boîte méta « Extrait ».
Publication automatique
Coche automatiquement la case « Publier sur Discourse » qui apparaît sur l’écran de création d’article pour les types d’articles devant être publiés sur Discourse. La case peut toujours être décochée lors de la création de l’article.
Suivi automatique des sujets publiés
Ce paramètre est activé par défaut. Lorsqu’il est activé, l’auteur d’un article publié sur Discourse depuis WordPress sera automatiquement « en train de surveiller » le sujet (il recevra des notifications Discourse pour chaque nouvelle réponse).
Types d’articles à publier
Ce paramètre doit être défini. Il est défini par défaut sur « article », mais les pages et les types d’articles personnalisés peuvent également être sélectionnés.
Exclure les articles par balise
Si vous ajoutez des balises WordPress à ce paramètre, aucun article WordPress portant l’une de ces balises ne sera publié sur Discourse.
Ne pas afficher le champ Nom Discourse
Cela masquera le champ « Nom d’utilisateur Discourse » dans les profils des utilisateurs. Le nom d’utilisateur Discourse est utilisé pour définir l’auteur du sujet lors de la publication d’articles sur Discourse.
Nom d’utilisateur Discourse modifiable
Cela détermine si les non-administrateurs peuvent modifier leur propre nom d’utilisateur Discourse dans leur profil. Le nom d’utilisateur Discourse est utilisé pour définir l’auteur du sujet lors de la publication d’articles sur Discourse.
Drapeaux de publication directe de la base de données
Ce paramètre est utilisé dans certaines configurations ayant des environnements WordPress spécialisés. N’utilisez pas ce paramètre sauf si vous savez ce qu’il fait.
Journaux de publication verbeux
L’activation de ce paramètre signifie que tous les articles publiés sur Discourse sont enregistrés dans les journaux WP Discourse, même en cas de succès. Normalement, seules les erreurs sont enregistrées.
Activer la publication par XMLRPC
XML-RPC est un appel de procédure à distance souvent utilisé par les logiciels de blog pour envoyer des articles vers WordPress. Les applications utilisant cette procédure incluent l’application de blog de wordpress.com.
Par défaut, WP Discourse ne publiera pas sur Discourse les articles créés via XML-RPC. La raison en est qu’il n’existe pas de bonne méthode pour indiquer si un article publié via un logiciel de blog est destiné à être publié sur Discourse.
Si vous souhaitez utiliser un logiciel de blog pour créer des articles publiés directement sur Discourse, vous devez ajouter du code au fichier functions.php de votre thème qui s’intercale dans le filtre wp_discourse_before_xmlrpc_publish. Le filtre wp_discourse_before_xmlrpc_publish passe deux arguments aux fonctions qui s’y intercalent. Le premier argument, $publish_to_discourse, est un booléen défini sur false pour désactiver la publication par XML-RPC. Le deuxième argument est l’objet post.
Pour que tous les articles XML-RPC soient automatiquement publiés par Discourse, vous devez écrire une fonction qui renvoie toujours true. Utilisez un code similaire à celui-ci :
Avertissement : cela entraînera la publication de tous les articles publiés via XML-RPC sur Discourse, y compris les anciens articles modifiés dans le logiciel de blog.
add_filter('wp_discourse_before_xmlrpc_publish', 'my_namespace_xmlrpc_publish', 10, 2 );
function my_namespace_xmlrpc_publish( $publish_to_discourse, $post ) {
return true;
}
Filtrage des articles XML-RPC par balise d’article
L’application de blog wordpress.com vous permet d’ajouter des balises aux articles. Les balises peuvent être utilisées pour contrôler si un article est publié ou non sur Discourse. Pour ne publier que les articles ayant une balise « discourse », utilisez un code similaire à celui-ci :
add_filter('wp_discourse_before_xmlrpc_publish', 'my_namespace_xmlrpc_publish_by_tag', 10, 2 );
function my_namespace_xmlrpc_publish_by_tag( $publish_to_discourse, $post ) {
if ( has_tag( 'discourse', $post ) ) {
return true;
}
return false;
}
Si vous souhaitez utiliser cette méthode mais ne pas voir la balise discourse apparaître dans vos articles publiés, vous pouvez la supprimer avec un code similaire à celui-ci :
add_filter( 'term_links-post_tag', 'my_prefix_remove_discourse_tag' );
function my_prefix_remove_discourse_tag( $tags ) {
foreach( $tags as $key => $value ) {
if ( strpos( $value, 'discourse' ) ) {
unset( $tags[ $key ] );
}
}
return $tags;
}
Filtrage des articles XML-RPC par date d’article
Pour ne permettre la publication sur Discourse via XML-RPC que des articles publiés après une certaine date, ajoutez un code similaire à celui-ci à votre fichier functions.php. Ce code permettra la publication sur Discourse de tous les articles publiés après le 1er janvier 2016.
add_filter('wp_discourse_before_xmlrpc_publish', 'my_namespace_xmlrpc_publish_by_date', 10, 2 );
function my_namespace_xmlrpc_publish_by_date( $publish_to_discourse, $post ) {
if ( strtotime( $post->post_date ) > strtotime( '2016-01-01') ) {
return true;
}
return false;
}
À faire : ajouter un filtre au plugin wp-discourse pour permettre la publication uniquement de nouveaux articles (et non d’articles modifiés) via XML-RPC.
Filtrage des catégories disponibles pour un type d’article personnalisé
Avant que les catégories Discourse ne soient affichées dans la boîte méta « Publier sur Discourse » sur la page admin/post-new de WordPress, le filtre WordPress 'wp_discourse_publish_categories' leur est appliqué. Il reçoit en arguments le tableau des catégories Discourse et l’article actuel. Cela peut être utilisé dans le fichier functions.php de votre thème pour limiter les catégories disponibles pour un type d’article donné.
Voici un exemple qui crée un type d’article 'acme_product' puis retourne les catégories Discourse « fun » et « scratch » à afficher dans la boîte méta Publier sur Discourse pour les articles de ce type.
// Créer le type d'article.
add_action( 'init', 'my_namespace_create_post_type' );
function my_namespace_create_post_type() {
register_post_type( 'acme_product',
array(
'labels' => array(
'name' => __( 'Produits' ),
'singular_name' => __( 'Produit' )
),
'public' => true,
'supports' => array( 'title', 'editor', 'comments', 'custom-fields' ),
'has_archive' => true,
'show_in_rest' => true,
)
);
}
// Filtrer les catégories disponibles pour le type d'article 'acme_product'.
add_filter( 'wp_discourse_publish_categories', 'my_namespace_filter_categories', 10, 2 );
function my_namespace_filter_categories( $categories, $post ) {
if ( 'acme_product' === get_post_type( $post ) ) {
$output = [];
foreach ( $categories as $category ) {
if ( 'fun' === $category['name'] || 'scratch' === $category['name'] ) {
$output[] = $category;
}
}
return $output;
}
return $categories;
}
Si vous souhaitez appliquer strictement une catégorie spécifique à des types d’articles spécifiques (c’est-à-dire 1:1), vous devez utiliser wpdc_publish_post_category à la place.
function wpdc_change_post_category( $category, $post_id ) {
if ( 'acme_product' === get_post_type( $post ) ) {
$categories = WPDiscourse\Utilities\Utilities::get_discourse_categories();
$fun_category = array_search( 'fun' , array_column( $categories, 'name' ));
return $fun_category;
} else {
return $category;
}
}
add_filter( 'wpdc_publish_post_category', 'wpdc_change_post_category' );
Afficher les métadonnées d’un sujet Discourse connecté
Lorsque vous avez configuré la publication, vous pouvez afficher des métadonnées sur le sujet Discourse en utilisant la personnalisation de modèle.
Tout d’abord, vous devez décider quel modèle vous souhaitez modifier. Si, par exemple, vous souhaitez uniquement afficher les métadonnées du sujet et aucun commentaire de réponse, vous devrez modifier le modèle no_replies.
Une fois le modèle choisi, vous pouvez le modifier pour ajouter des métadonnées du sujet Discourse. Voici un extrait qui le fait, avec quelques commentaires expliquant ce que fait le code :
// Assurez-vous que wp-discourse est présent en utilisant votre méthode préférée,
// par exemple https://wordpress.stackexchange.com/questions/127818/how-to-make-a-plugin-require-another-plugin
// Exiger les utilitaires du plugin depuis le plugin wp-discourse
require_once ABSPATH . 'wp-content/plugins/wp-discourse/lib/plugin-utilities.php';
use WPDiscourse\Shared\PluginUtilities;
// Encapsulez votre modèle de métadonnées de sujet dans une classe afin de pouvoir inclure facilement les utilitaires du plugin
class DiscourseTopicMetadata {
// Inclure les utilitaires du plugin WordPress dans votre classe
use PluginUtilities;
public function __construct() {
// Ajouter le filtre de modèle lors de l'initialisation de la classe
add_filter( 'discourse_no_replies_html', array( $this, 'topic_metadata_html' ) );
}
function topic_metadata_html( $input ) {
// Obtenir le lien permanent Discourse à partir des métadonnées de l'article
$discourse_permalink = get_post_meta( get_the_ID(), 'discourse_permalink', true );
// Utiliser le lien permanent Discourse pour obtenir le JSON du sujet depuis Discourse, en utilisant la méthode d'aide des utilitaires du plugin qui gère l'autorisation pour vous
$topic = $this->get_discourse_topic($discourse_permalink);
// Afficher votre balisage, y compris les métadonnées du sujet que vous souhaitez afficher
ob_start();
?>
<div id="discourse-topic-meta">
<div class="views">
Vues
<?php echo $topic->views; ?>
</div>
<div class="replies">
Réponses
<?php echo $topic->reply_count; ?>
</div>
</div>
<?php
return ob_get_clean();
}
}
// Instancier la classe pour ajouter le filtre
new DiscourseTopicMetadata();
Pour plus de détails sur les métadonnées de sujet disponibles dans la réponse de get_discourse_topic, consultez Discourse API Docs.

