Sie können das WP Discourse-Plugin verwenden, um WordPress-Beiträge auf Ihrem Discourse zu veröffentlichen, damit Ihre Community über Ihre WordPress-Inhalte diskutieren kann. Bevor Sie die Veröffentlichung einrichten können, müssen Sie zuerst das WP Discourse-Plugin auf WordPress installieren und es mit Ihrem Discourse verbinden. Wenn Sie bereit sind, loszulegen, schauen Sie sich zunächst dieses kurze Video an oder folgen Sie den untenstehenden Anweisungen.
Nächster Schritt
Sobald Sie die Veröffentlichung eingerichtet haben, möchten Sie vielleicht die folgenden Themen durchgehen:
- Discourse für WordPress-Kommentare verwenden
- Mit WordPress bei Discourse anmelden (DiscourseConnect)
Anweisungen
Veröffentlichungseinstellungen
Stellen Sie sicher, dass Sie Ihre Einstellungen nach jeder Änderung immer speichern. Klicken Sie am unteren Rand der Seite auf die Schaltfläche „Optionen speichern“.
Die Einstellungen sollten relativ selbsterklärend sein. Falls Sie Schwierigkeiten haben, eine der Einstellungen zu verstehen, antworten Sie bitte auf dieses Thema, um weitere Klarstellung zu erhalten.
Standard-Discourse-Kategorie
Legt die Standardkategorie fest, in der Ihre Beiträge auf Discourse veröffentlicht werden. Diese Einstellung kann für einzelne Beiträge auf dem WordPress-„Neuer Beitrag“-Bildschirm überschrieben werden.
Unterkategorien anzeigen
Gibt an, ob die Unterkategorien Ihres Forums als Kategorien verfügbar sein sollen, in die Sie von WordPress aus veröffentlichen können. Sie müssen diese Einstellung speichern, bevor Unterkategorien in der Eingabe für die Option „Standard-Discourse-Kategorie“ verfügbar werden.
Kategorie-Update erzwingen
Für den Fall, dass Sie neue Kategorien zu Ihrem Forum hinzugefügt haben und diese auf Ihrer WordPress-Website verfügbar sein sollen. Durch Aktivieren dieser Einstellung und Speichern der Optionsseite wird ein einzelner API-Aufruf an Discourse durchgeführt, um die Discourse-Kategorien abzurufen. Nach dem Aktivieren finden Sie die Einstellung beim nächsten Aufruf des Reiters „Kommentierung“ deaktiviert.
Tags zulassen
Aktivieren Sie dies, wenn Sie Tags zu Discourse-Themen hinzufügen möchten, die über WordPress erstellt wurden.
Als nicht aufgeführte Themen veröffentlichen
Veranlasst dazu, dass von WordPress veröffentlichte Beiträge auf Discourse nicht aufgeführt werden. Wenn Sie die Webhook-Einstellung „Kommentardaten synchronisieren“ aktivieren, werden nicht aufgeführte Beiträge sichtbar, sobald sie die erste Antwort auf Discourse erhalten.
Vollständigen Beitraginhalt verwenden
Ermöglicht es Ihnen, vollständige WordPress-Beiträge anstelle von Auszügen in Ihrem Discourse-Forum zu veröffentlichen. Damit der Button „Ganzen Beitrag anzeigen“ unter Ihrem Beitrag auf Discourse nicht erscheint, müssen Sie die Discourse-Site-Einstellung „embed truncate“ deaktivieren (zu finden unter yourforum.com/admin/site_settings/category/posting).
Benutzerdefinierte Länge für Auszüge
Wenn Sie die Einstellung „Vollständigen Beitraginhalt verwenden“ nicht ausgewählt haben, erstellt diese Einstellung Auszüge dieser Länge, die auf Discourse veröffentlicht werden. Sie können auch manuell Auszüge erstellen, wenn Sie einen WordPress-Beitrag erstellen, indem Sie den Auszug im Meta-Feld „Auszug“ hinzufügen.
Automatische Veröffentlichung
Dieses Häkchen setzt das Kontrollkästchen „Auf Discourse veröffentlichen“, das auf dem Bildschirm „Neuer Beitrag“ für die zu veröffentlichenden Beitragstypen angezeigt wird. Das Kontrollkästchen kann beim Erstellen des Beitrags dennoch deaktiviert werden.
Verfolgte veröffentlichte Themen automatisch
Diese Einstellung ist standardmäßig aktiviert. Wenn sie aktiviert ist, wird der Autor eines von WordPress auf Discourse veröffentlichten Beitrags automatisch als „Beobachtend“ für das Thema markiert (sie erhalten Discourse-Benachrichtigungen über jede neue Antwort).
Zu veröffentlichende Beitragstypen
Diese Einstellung muss gesetzt sein. Standardmäßig ist sie auf „post“ festgelegt, aber Seiten und benutzerdefinierte Beitragstypen können ebenfalls ausgewählt werden.
Beiträge nach Tag ausschließen
Wenn Sie WordPress-Tags zu dieser Einstellung hinzufügen, werden keine WordPress-Beiträge mit einem dieser Tags auf Discourse veröffentlicht.
Discourse-Namensfeld nicht anzeigen
Dies versteckt das Feld „Discourse-Benutzername“ in den Benutzerprofilen. Der Discourse-Benutzername wird verwendet, um den Autor des Themas beim Veröffentlichen von Beiträgen auf Discourse festzulegen.
Discourse-Benutzername bearbeitbar
Dies bestimmt, ob Nicht-Administratoren ihren eigenen Discourse-Benutzernamen in ihrem Profil bearbeiten können. Der Discourse-Benutzername wird verwendet, um den Autor des Themas beim Veröffentlichen von Beiträgen auf Discourse festzulegen.
Direkte Datenbankveröffentlichungsflags
Diese Einstellung wird in bestimmten Setup-Konfigurationen mit spezialisierten WordPress-Umgebungen verwendet. Verwenden Sie diese Einstellung nicht, es sei denn, Sie wissen, was sie bewirkt.
Ausführliche Veröffentlichungsprotokolle
Wenn Sie diese Einstellung aktivieren, werden alle auf Discourse veröffentlichten Beiträge in den WP Discourse-Protokollen protokolliert, auch wenn sie erfolgreich waren. Normalerweise werden nur Fehler protokolliert.
Veröffentlichung über XML-RPC aktivieren
XML-RPC ist ein Remote-Procedure-Call, der häufig von Blogging-Software zum Senden von Beiträgen an WordPress verwendet wird. Apps, die dieses Verfahren verwenden, umfassen die wordpress.com Blogging-App.
Standardmäßig veröffentlicht WP Discourse keine Beiträge auf Discourse, die über XML-RPC erstellt wurden. Der Grund dafür ist, dass es keine gute Möglichkeit gibt anzugeben, ob ein über Blogging-Software veröffentlichter Beitrag auf Discourse veröffentlicht werden soll.
Wenn Sie Blogging-Software verwenden möchten, um Beiträge zu erstellen, die direkt auf Discourse veröffentlicht werden, müssen Sie einige Codezeilen in die Datei functions.php Ihres Themes einfügen, die in den Filter wp_discourse_before_xmlrpc_publish eingreifen. Der Filter wp_discourse_before_xmlrpc_publish übergibt zwei Argumente an Funktionen, die damit verbunden sind. Das erste Argument, $publish_to_discourse, ist ein Boolean-Wert, der auf false gesetzt ist, um die Veröffentlichung über XML-RPC zu deaktivieren. Das zweite Argument ist das post-Objekt.
Um alle XML-RPC-Beiträge automatisch von Discourse veröffentlichen zu lassen, müssen Sie eine Funktion schreiben, die immer true zurückgibt. Verwenden Sie beispielsweise folgenden Code:
Warnung: Dies führt dazu, dass alle über XML-RPC veröffentlichten Beiträge auf Discourse veröffentlicht werden, einschließlich alter Beiträge, die in der Blogging-Software bearbeitet werden.
add_filter('wp_discourse_before_xmlrpc_publish', 'my_namespace_xmlrpc_publish', 10, 2 );
function my_namespace_xmlrpc_publish( $publish_to_discourse, $post ) {
return true;
}
XML-RPC-Beiträge nach Beitragstags filtern
Die wordpress.com-Blogging-App ermöglicht es Ihnen, Tags zu Beiträgen hinzuzufügen. Tags können verwendet werden, um zu steuern, ob ein Beitrag auf Discourse veröffentlicht wird oder nicht. Um nur Beiträge mit dem Tag „discourse“ zu veröffentlichen, verwenden Sie beispielsweise folgenden Code:
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;
}
Wenn Sie diese Methode verwenden möchten, aber nicht möchten, dass das Tag „discourse“ in Ihren veröffentlichten Beiträgen erscheint, können Sie es mit folgendem Code entfernen:
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;
}
XML-RPC-Beiträge nach Beitragsdatum filtern
Um nur Beiträge zu veröffentlichen, die nach einem bestimmten Datum erstellt wurden, fügen Sie einigen Code wie diesen zu Ihrer Datei functions.php hinzu. Dieser Code ermöglicht es, alle Beiträge, die nach dem 1. Januar 2016 veröffentlicht wurden, auf Discourse zu veröffentlichen.
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;
}
Todo: Fügen Sie einen Filter zum wp-discourse-Plugin hinzu, um nur neue Beiträge (im Gegensatz zu bearbeiteten Beiträgen) über XML-RPC zu veröffentlichen.
Verfügbare Kategorien für einen benutzerdefinierten Beitragstyp filtern
Bevor die Discourse-Kategorien im Meta-Feld „Auf Discourse veröffentlichen“ auf der WordPress-Seite admin/post-new angezeigt werden, wird der WordPress-Filter 'wp_discourse_publish_categories' auf sie angewendet. Als Argumente werden das Discourse-Kategorien-Array und der aktuelle Beitrag übergeben. Dies kann in der Datei functions.php Ihres Themes verwendet werden, um festzulegen, welche Kategorien für einen bestimmten Beitragstyp verfügbar sind.
Hier ist ein Beispiel, das einen Beitragstyp 'acme_product' erstellt und dann die Discourse-Kategorien „fun“ und „scratch“ zurückgibt, die im Meta-Feld „Auf Discourse veröffentlichen“ für Beiträge dieses Typs angezeigt werden sollen.
// Erstellen des Beitragstyps.
add_action( 'init', 'my_namespace_create_post_type' );
function my_namespace_create_post_type() {
register_post_type( 'acme_product',
array(
'labels' => array(
'name' => __( 'Produkte' ),
'singular_name' => __( 'Produkt' )
),
'public' => true,
'supports' => array( 'title', 'editor', 'comments', 'custom-fields' ),
'has_archive' => true,
'show_in_rest' => true,
)
);
}
// Filtern der verfügbaren Kategorien für den Beitragstyp '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;
}
Wenn Sie eine bestimmte Kategorie strikt auf bestimmte Beitragstypen anwenden möchten (d. h. 1:1), sollten Sie stattdessen wpdc_publish_post_category verwenden.
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' );
Metadaten eines verbundenen Discourse-Themas anzeigen
Wenn Sie die Veröffentlichung eingerichtet haben, können Sie Metadaten über das Discourse-Thema anzeigen, indem Sie Vorlagenanpassungen verwenden.
Zuerst müssen Sie entscheiden, welche Vorlage Sie ändern möchten. Wenn Sie beispielsweise nur die Metadaten des Themas anzeigen möchten und keine Antworten als Kommentare, sollten Sie die Vorlage no_replies ändern.
Sobald Sie eine Vorlage ausgewählt haben, können Sie sie ändern, um Discourse-Themen-Metadaten hinzuzufügen. Hier ist ein Codeausschnitt, der dies tut, mit einigen Kommentaren, die erklären, was der Code macht:
// Stellen Sie sicher, dass wp-discourse vorhanden ist, verwenden Sie Ihre bevorzugte Methode,
// z. B. https://wordpress.stackexchange.com/questions/127818/how-to-make-a-plugin-require-another-plugin
// Erfordern Sie die Plugin-Utilities aus dem wp-discourse-Plugin
require_once ABSPATH . 'wp-content/plugins/wp-discourse/lib/plugin-utilities.php';
use WPDiscourse\Shared\PluginUtilities;
// Kapseln Sie Ihre Themen-Metadaten-Vorlage in einer Klasse ein, damit Sie die Plugin-Utilities einfach einbinden können
class DiscourseTopicMetadata {
// Binden Sie die wp-Plugin-Utilities in Ihrer Klasse ein
use PluginUtilities;
public function __construct() {
// Fügen Sie den Vorlagenfilter beim Initialisieren der Klasse hinzu
add_filter( 'discourse_no_replies_html', array( $this, 'topic_metadata_html' ) );
}
function topic_metadata_html( $input ) {
// Holen Sie sich den Discourse-Permalink aus den Beitragsmetadaten
$discourse_permalink = get_post_meta( get_the_ID(), 'discourse_permalink', true );
// Verwenden Sie den Discourse-Permalink, um das Themen-JSON von Discourse abzurufen, unter Verwendung der Hilfsmethode aus den Plugin-Utilities, die die Autorisierung für Sie übernimmt
$topic = $this->get_discourse_topic($discourse_permalink);
// Geben Sie Ihr Markup aus, einschließlich der Themenmetadaten, die Sie anzeigen möchten
ob_start();
?>
<div id="discourse-topic-meta">
<div class="views">
Aufrufe
<?php echo $topic->views; ?>
</div>
<div class="replies">
Antworten
<?php echo $topic->reply_count; ?>
</div>
</div>
<?php
return ob_get_clean();
}
}
// Instanziieren Sie die Klasse, um den Filter hinzuzufügen
new DiscourseTopicMetadata();
Weitere Details dazu, welche Themenmetadaten in der Antwort von get_discourse_topic verfügbar sind, finden Sie unter Discourse API Docs.

