Discourseからのコメントを表示するようにWP Discourseを設定する

WordPress のコメントシステムとして Discourse を使用できます。コメント機能は公開機能に依存するため、コメントを機能させるには公開設定が必要です。公開設定が完了し、コメント設定の準備ができた場合は、この短いビデオを視聴するか、以下の手順に従ってください。

次のステップ

コメントを設定したら、次のトピックを確認することをお勧めします。


手順

コメントの設定

Discourse のコメントを WordPress サイトに表示するには、Discourse コメントを有効にする 設定を選択する必要があります。有効にすると、2 つのオプションが表示されます。コメントを表示する オプションは、Discourse に公開された各 WordPress 投稿にコメントテンプレートを読み込みます。このテンプレートは、WordPress 投稿の下に Discourse コメントを表示します。コメントへのリンクを表示する オプションは、公開された投稿の下に関連する Discourse トピックへのリンクを表示するコメントテンプレートを読み込みます。リンクにはトピックへの返信数が表示されますが、WordPress には返信は表示されません。

これらのコメントオプションはどちらも、WordPress 投稿のコメントテンプレートを読み込むことによって機能します。これは、コメントが投稿で有効になっている場合にのみ機能することを意味します。すべての投稿でコメントを有効にしたいが、Discourse に公開されていない投稿の履歴 WordPress コメントを表示したくない場合は、WordPress コメントテンプレートを削除する 設定を有効にします。

設定

その他のコメント設定が何をするかについての簡単な説明を以下に示します。それでも不明な点がある場合は、このトピックに返信して詳細を質問してください。

Ajax でコメントを読み込む

この設定は、サーバーから読み込むのではなく、WordPress クライアントからコメントを読み込むために使用されます。これは、ページキャッシュがサイトで新しいコメントの読み込みを妨げている場合に役立ちます。

コメント CSS を読み込む

この設定は、WordPress に表示される Discourse の onebox や引用符の問題を修正するスタイルシートを読み込みます。

既存の WP コメントを表示する

Discourse にも公開されている投稿の既存の WordPress コメントも表示するには、この設定を選択します。

既存コメントの見出し

既存のコメントを表示している場合、この設定は WordPress コメントの上にヘッダーを追加します。

選択的インポート設定

コメントを選択的にインポートできるいくつかの設定があります。これらは自明であるはずです。各デフォルト値は開始点として適しているため、理由がない限り変更しないでください。

  • 最大表示コメント数
  • 返信の最小数
  • 投稿の最小スコア
  • 最小信頼レベル
  • 信頼レベルスコアをバイパスする
  • モデレーターが「いいね!」したコメントのみインポートする
カスタム日時フォーマット

この設定は、WordPress サイトに表示される各 Discourse コメントの日付をフォーマットします。デフォルト値から始めてください。日付フォーマットを変更したい場合は、設定の説明にあるリンクをクリックして詳細を確認してください。

コメント HTML をキャッシュする

この設定はパフォーマンスを向上させるために使用できます。コメント HTML をキャッシュすると、Discourse へのリクエスト数が削減されます。関連する設定 キャッシュされたコメント HTML をクリアする は自明であるはずです。

詳細なコメントログ

これを有効にすると、エラー(デフォルト)に加えて、Discourse からのすべてのコメントの取得がログに記録されます。

コメントデータ同期 Webhook

「Webhook」設定パネルで Sync Comment Data Webhook を有効にすると、WordPress から Discourse への API リクエスト数を大幅に削減できます。Webhook を有効にする前に

  1. 設定の説明に記載されている Discourse URL (http://forum.example.com/admin/api/web_hooks.) にアクセスします。

  2. 「新しい Webhook」ボタンをクリックしてフォームに入力します。

    • ペイロード URL フィールドに、WP Discourseコメントデータ同期 フィールドの説明に記載されている URL を入力します。これは、WordPress サイトの URL を使用する以外は、次のようになります: https://wp-discourse.dev/wp-json/wp-discourse/v1/update-topic-content

    • コンテンツタイプフィールドが application/json に設定されていることを確認します。

    • Secret 入力フィールドに、12 文字以上のテキスト文字列を入力します。次に、この同じキーを WP DiscourseWebhook シークレットキー 設定にコピーします。

    • 「この Webhook をトリガーするイベントはどれですか?」ボックスで、「投稿イベント」が選択されていることを確認します。

    • WordPress から特定のカテゴリにのみ投稿を公開する場合は、トリガーカテゴリフィールドを使用します。これにより、WordPress サイトは、関連する Discourse 投稿がないトピックのリクエストを処理する必要がなくなります。

    • ペイロード URL の TLS 証明書を確認する設定は有効のままにします。

    最後に、「アクティブ」チェックボックスを有効にして、作成をクリックします。Webhook が保存されたら、「イベントに移動」ボタンをクリックします。

  3. WordPress に戻り、Discourse からの Webhook シークレットを Webhook シークレットキー フィールドに入力し、コメントデータ同期 Webhook 設定を有効にしたことを確認します。次に、オプションを保存します。

これで Discourse Webhook が機能するはずです。Discourse の Webhook の「Ping」ボタン(/admin/api/web_hooks/:webhook_id/events にあります)をクリックして確認してください。Webhook の Ping がステータスコード 200 を返していることを確認してください。

WordPress アーカイブページ用の comments_number 同期期間の調整

投稿の正しい Discourse コメント数を取得するために、プラグインは現在のコメント数を取得するために定期的に Discourse への HTTP リクエストを行う必要があります。単一ページでは、この期間は 10 分ごとに設定されます。アーカイブページでは、期間は 24 時間ごとに 1 回に設定されます。これは、アーカイブページにアクセスするたびに Discourse への複数のリクエストを行うことを避けるためです。

サイトのアーカイブページを表示する際に、プラグインが Discourse へのリクエストを多すぎると感じる場合は、'discourse_archive_page_sync_period' フィルターにフックして archive_page_sync_period を調整できます。テーマの functions.php ファイルに次のようなものを追加します。

add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
  // This will change to sync_period for archived posts to once a week.
  return WEEK_IN_SECONDS;
}

プラグインがアーカイブページの現在のコメント数を取得するために Discourse へのリクエストを十分に実行していないと感じる場合は、テーマの functions.php ファイルに次のようなものを追加できます。これにより、archive_page_sync_period が 10 分に設定されます。
注意: 忙しいサイトでは、サーバーに大きな負荷がかかる可能性があります。

add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
  // This will change to sync_period for archived posts to once a week.
  return 10 * MINUTE_IN_SECONDS;
}

WordPress コメントテンプレートを読み込まずにコメントを表示する

WP Discourse プラグインは、Discourse コメントを読み込むために WordPress コメントテンプレートを使用します。テーマがコメントテンプレートを読み込んでいない場合は、静的 get_discourse_comments ヘルパー関数を使用してコメントを表示できます。この関数には、コメントを表示したい WordPress 投稿の ID を指定する必要があります。以下にその簡単な使用例を示します。

use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments(859);
echo $discourse_comments;

コメントは、プラグインのコメント設定タブにある「Discourse コメントを有効にする/コメントを表示する」オプションを選択した場合と同じ方法で表示されます。この関数が使用されると、その設定の値は無視されますが、他のすべてのコメント設定は尊重されます。

トラブルシューティング

Discourse コメントの最も一般的な問題は、Discourse で投稿が行われた直後に表示されない場合があることです。この遅延は意図的なものであり、プラグインは Discourse へのリクエスト数を減らそうとします。ページが読み込まれるたびにリクエストを行うと、サイトが遅くなります。コメントがすぐに表示されない場合は、10 分待ってからページを再度更新してください。

Discourse と WordPress の両方のコメントを表示する場合のコメント数に関する問題

wp-discourse プラグインは、WordPress の get_comments_number フィルターフックを使用しているため、投稿に対して作成された Discourse コメント数をテーマ全体に表示できます。これは、投稿に対して Discourse と WordPress の両方のコメントが表示されている場合に競合が発生します。プラグインはほとんどの場所でその競合を解決できます。解決できない場所の 1 つは、WordPress テーマがコメントセクションの先頭によく表示するコメントタイトルです。「考えは 2 件…」のようなもので始まるセクションです。

これを簡単に行うには、テーマの CSS ファイルにルールを追加します。

.discourse-comments-area ~ .comments-area .comments-title  {
	display: none;
}
「いいね!」 7

@angus 非常に良いガイドとビデオです。まとめていただきありがとうございます。プラグインを実装しましたが、コメント機能で問題が発生しています。ここには2つの質問/問題があります。

  • WordPressから共有された投稿にDiscourseで返信を投稿すると、WordPressの返信数が変更されますが、コメントは表示されません。
  • WordPressのコメント機能をオフにして、Discourse経由でのみ返信できるようにしたいのですが、可能でしょうか?

表示されているのは以下の通りです。この「1」の返信はDiscourseからのものですが、返信自体は表示されていません。

CC: @Abdelrahman_MoHamed

Hey @Jacob_Peebles

上記ガイドに従っていると仮定すると、次に確認すべきはテーマです。ブロックテーマを使用していますか?もしそうであれば、以下を参照してください。

はい、WordPressでコメントをオフにするだけです。

  1. ダッシュボードから「設定」>「ディスカッション」を選択します。
  2. 「新しい投稿へのコメントを許可する」の横にあるチェックボックスをオフにします。
  3. 「設定を保存」をクリックします。
「いいね!」 1

@angus - うまくいきました!はい、どうやら私たちは「ブロック」エディターを使用しているようです。機能はここで確認できます。

奇妙な点は、スタイル/フォントがディスコースのコメントに継承されていないように見えることだけです。それが私たちのテーマの問題なのか、それとも注目に値する点なのかはわかりません。

改めて感謝します。

すみません、スクリーンショットも添付します。

ジェイコブ、うまくいってよかったです。

独自のコメントスタイリングを追加する必要があります。ディスコースのコメントは、各テーマが独自のスタイリングアプローチを持っているため、意図的に非常に軽くスタイリングされています。この場合、次のような基本的なスタイリングで十分です。

ol.comment-list {
    list-style: none;
    padding: 0;
}

img.avatar.photo.avatar-default {
    height: 40px;
    width: 40px;
}

.comment-author.vcard {
   display: flex;
   align-items: center;
   gap: 1em;
}

「いいね!」 1

素晴らしい @angus

@angus さん、こんにちは

素晴らしいプラグインと役立つ説明をありがとうございます!

Discourse を私の WordPress ウェブサイトに統合し、接続が完了しました。
WP サイトで投稿を作成したところ、Discourse に新しいトピックとして取り込まれていることを確認できました。これは素晴らしいです!

しかし、Discourse では常に最初の投稿コンテンツが抜粋(hello world など)として表示され、WP 投稿で内容を変更しても Discourse のトピックコンテンツが更新されません。内容の変更は『Show Full Post』をクリックした場合にのみ反映されます。これは、投稿の全コンテンツを表示する設定に変更できず、抜粋のみが表示されることを意味します。この設定を行うと、Discourse トピックからボタンが消え、更新前の最初のコンテンツのみが表示されます。私の言っていることが伝わっていますでしょうか?

また、Discourse からトピックへの返信として投稿されたコメントが、WP の投稿の下に表示されません。コメントは有効にしており、Astra テーマを使用していますので、ブロックエディターではありません。これを修正するために何をすべきか分かりません。

これら2点について何かアドバイスがあれば、大変助かります。よろしくお願いします!

@Cloさん、プラグインをお試しいただきありがとうございます。公開の理想的な状態を明確にしていただけますか?「ユーザーストーリー」として説明してください。コメントについてですが、あなたのサイトではWordPressのコメントは有効になっていますか?

@angus さん、こんにちは。

DiscourseサイトからWPサイトへコメントがようやく取り込まれたようです。かなり時間がかかりましたが、ありがとうございました!

ただ、Discourseで新しいトピックが作成されたときに、プラグインがWPで新しい投稿を作成することは可能でしょうか?それとも、その逆しかできないのでしょうか?

それは、WordpressとDiscourseの両方に追加のカスタムプラグインを使用した場合にのみ可能です。WP Discourseプラグイン自体はそのように設計されていません。

どうもありがとうございます。参考になりました。
素晴らしいプラグインです!

「いいね!」 1