wp-discourse-embedからWP Discourseへの移行作業 – 過去の投稿が表示されない

約5年間、私のブログは@techAPJ氏のwp-discourse-embedで運用されていました。以下は、投稿の例です。

Soya Chunks Masala Dry Recipe | A Little Bit of Spice と対応するフォーラム投稿:Soya Chunks Masala Dry - blog - comments

@angus氏のWP Discourseを移行して設定することができました。

しかし、古いフォーラムの投稿がブログ投稿のコメントとして表示されなくなりました。上記のブログ投稿がその例です。

マッピングが必要だと推測しています。

これを統合するにはどうすればよいですか?

ログは以下のようになっています。

最新のログはこちらです:

[2024-04-03 01:42:27] webhook_topic.ERROR: update_topic_content.webhook_verification_error [“message”,“Discourse Webhook Request Error: signatures did not match.”]

生のログはこちら。

「いいね!」 1

こんにちは。

件名:

このエラーは、WP-Discourse の Webhook Secret Key オプションの値が、Discourse の Webhook で定義されたパスワードと一致しないことを意味します。確認していただけますか?

@simon が間違っていたら訂正してくれると思いますが、はい、WP の投稿は Discourse のトピックと同期する必要があります。既存のトピックについては、既存の Discourse トピックにリンクするオプションがあるはずです。

同期されると、コメントが取得されるはずです。

もっと良い方法があるかどうかはわかりませんが、誰かがより良い洞察を提供してくれることを願っています。

「いいね!」 4

両方の問題について、その通りです。

@Jane_Jojo さん、@Arkshine さんが示した方法で、既存のDiscourseトピックを対応するWordPressの投稿にリンクしてみてください。ユーザーインターフェースは、クラシックWordPressエディターを使用しているか、新しいブロックエディターを使用しているかによって若干異なります。

DiscourseトピックをWordPressの投稿にリンクするのがうまくいけば、次にすべての既存のトピックと投稿をリンクする方法を見つけることになります。古い投稿はいくつありますか?手動でDiscourseにリンクするには多すぎる投稿がある場合、プロセスを自動化する方法があるかもしれません。

「いいね!」 2

ありがとうございます。

これを実行しました。

そして、pingを実行すると200が返ってきます。これは明確です。

次にこれを実行します。


しかし、投稿にはそれが反映されていません。

他に何か見落としていることはありますか? ログには更新に関する情報がないようです。

更新:
DiscourseのWebhookからpingを実行すると

ログ側でこれが出力されます。

\u003e[2024-04-03 21:38:14] webhook_topic.ERROR: update_topic_content.response_body_error

WordPressでキャッシュプラグインを使用していますか?

この設定を有効にする必要があるかもしれません。

また、まだ有効にしていない場合は、コメントのデバッグを有効にすると役立つ可能性があります。

image

表示されているエラーメッセージは、Webhookを「ping」した場合に生成されます。WordPress側では、Discourseから送信されたWebhookにpostオブジェクトが存在することを期待しています。postは、pingボタンをクリックしただけではペイロードに含まれません。DiscourseにリンクされているDiscourseトピックにコメントを残してみて、それでもエラーが発生するかどうか試してください。

DiscourseコメントをWordPressサイトに表示させる問題については、以下を確認してください。

  • Discourseに公開する投稿でWordPressのコメントが有効になっていることを確認してください。
  • 「Discourseコメントを有効にする」オプションが有効になっていることを確認してください。

以前にWordPressサイトでコメントを有効にしたことがない場合は、Discourseにまだ接続されていない投稿に対して現在コメントを有効にしたくない場合があります。それらの投稿に対してWordPressのコメントフォームが表示されるのを避けるには、サイト全体でコメントを有効にしてから、WP Discourse Commenting Optionsページで「Remove WordPress Comments Template」設定を選択できます。

問題が解決しない場合は、お知らせください。

「いいね!」 1

両方有効にしましたが、うまくいきません。


ページをリロードしましたが、ログには何も表示されません。

ページのソースを表示すると、HTML内に多くのDiscourseの参照が見られます。何か試しているようですね…

長らくコメントセクションの設定は以下のようになっています。

Discourse にリンクされた投稿でコメントが有効になっていることを確認してください。場合によっては、「編集」ページに「ディスカッション」オプションが表示されないことがあります。「スクリーン オプション」メニューから選択する必要がある場合があります。

はい、有効になっていました :-(\n\n

すみません、コメントテンプレートが読み込まれていることを示すものはページ上に何も見当たりません。スクリーンショットにある discourse-embed-js への参照は、WP Discourse プラグインのものではありません。これは、wp-discourse-embed プラグインによって読み込まれたスクリプトに関連していると思われます。実際、サイトでエラーが発生しています。

Failed to load resource: the server responded with a status of 404 () discourse-embed.js

また、WP Discourse プラグインではなく、wp-discourse-embed プラグインからの \u003cdiv id=\"discourse-comments\"\u003e\u003c/div\u003e もページ上にあります。

サイトでキャッシュされたコメントに問題があることを確認するまで、WP Discourse の「Ajax でコメントを読み込む」設定を有効にしないでください。たとえそうであったとしても、コメントテンプレートを表示できるはずです。

コメントに関連するプラグインはサイトにインストールされていますか? プラグインまたはサイトのテーマが WordPress コメントテンプレートの読み込みを妨げているのではないかと懸念しています。WP Discourse プラグインは、そのテンプレートが読み込まれることに依存しています。それに対する回避策はいくつかありますが、すべてかなり技術的です。

物事が解決できると確信しています :slight_smile:

「いいね!」 1

テーマのコード履歴を確認していたところ、しばらく前にWPコメントコードをすべてDiscourseコメントに変更したことに気づきました。

レガシーコードが必要だと思いますか?

記憶を頼りにしていますが、編集されたcomments.phpファイルが問題の原因だとは思いません。本来であれば、テーマのcomments.phpファイルが読み込まれる代わりに、テーマからこの関数が呼び出されたときにWP Discourseプラグインが独自のコメントセクションを読み込むはずです。comments_template()

テーマのsingle.phpファイル、またはDiscourseにリンクした投稿の表示に使用されているファイルを確認してください。ファイルにcomments_template()への呼び出しが含まれているかどうかを確認してください。それは次のようなものになります。

if ( comments_open() || get_comments_number() ) :
	comments_template();
endif;

WP Discourseのコメントを読み込むトリガーとなるのは、coments_template()への呼び出しです。

これについては間違っている可能性があります。それでも解決しない場合は、詳しく調べることができます。

問題を解決できました。コメントはテーマレベルで無効になっていました。有効にすることで修正されました。

詳細な回答をありがとうございました。

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.