Discourseからのリンクを解除しても「embed url already being used」というエラーメッセージが表示される

既存の WordPress 投稿が以前はフォーラムにも公開されていました。
ある時点から、投稿を更新して「保存」リンクをクリックするたびに、以下のエラーメッセージを含むメールが届くようになりました。

Discourse 公開失敗

あなたのサイトからの投稿が Discourse への公開に失敗しました ...

...

失敗の理由:
Discourse から不正な応答が返されました。
Embed url wird bereits verwendet(「すでに使用されています」という意味)

投稿と Discourse のリンクを解除し、フォーラム上の投稿も削除しました。それでも、投稿を保存するたびに同じエラーが表示され続けます。また、新規トピックとして投稿を試みても、同じエラーが発生します。

「いいね!」 1

プラグインにバグがあり、WordPress でリンクが解除された後に、Auto Publish 設定が有効でブロックエディターを使用して投稿が公開された場合、Discourse への再公開を試みていました。Discourse への公開は失敗し、埋め込み URL がすでに Discourse で使用されていたためです。この問題は昨日修正しましたが、修正は新たにリンクが解除された投稿にのみ適用されます。過去にリンクが解除された投稿についても修正する方法を検討します。

投稿がリンク解除された際、プラグインは Discourse 上のトピックの embed_url を削除していませんでした。そのため、投稿がリンク解除された後に Discourse へ再公開すると、Embed url is already being used エラーが発生して公開が失敗します。これを修正します。

Discourse 上で関連するトピックを削除している場合、エラーなしに投稿を Discourse へ再公開できるはずです。トピックが削除された際に Discourse 上の embed_url が正しく削除されるか確認します。

今週後半または週末にプラグインを更新する予定です。その更新で、リンク解除された投稿に関する問題は解消されるはずです。

「いいね!」 2

詳しいご回答をありがとうございます!現時点で何か手動の回避策はありますか?

WordPress で Discourse からリンクを解除した投稿が更新された際にエラーメッセージが表示されないようにするには、wpdc_auto_publish_overridden という名前の投稿カスタムフィールドを追加し、その値を 1 に設定してください。

ブロックエディターでカスタムフィールドがまだ有効になっていない場合は、以下の手順に従ってください:

  1. ページの右上にある ブロックエディターの設定(3 点メニュー) をクリックし、「オプション」を選択します。
  2. 「高度なパネル」セクション から「カスタムフィールド」を選択します。
「いいね!」 1

WP Discourse のバージョン 2.0.4 を WordPress リポジトリにプッシュしました。これにより、プラグインのバージョンが 2.0.3 未満の状態でサイトが運用されていた際に、Discourse とのリンクが切れた投稿の問題に対処できます。これらの投稿については、最初にリンクが切れた投稿を更新すると、Embed url has already been taken というエラーメッセージが表示されます。しかし、最初の更新後は、このエラーメッセージは表示されなくなります(また、公開エラーメールも送信されません)。完璧な解決策ではありませんが、この問題を解消する最善の方法です。

すでにその埋め込み URL を使用している Discourse のトピックが存在する状態で、投稿を Discourse に公開しようとすると、エラーが発生します。その埋め込み URL を使用している Discourse のトピックを削除すれば、トピックを再公開できるようになるはずです。WordPress の投稿に関連付けられたトピック埋め込みを Discourse が削除するには、ある程度の時間がかかります。この期間を何が決めるのか、まだ確認が必要です。もしまだこの問題でお困りの場合は、お知らせください。

理想的には、WordPress の投稿が Discourse のトピックからリンク解除された際、その投稿に関連付けられた embed_url が Discourse 側で削除されるべきです。残念ながら、現在では Discourse API を通じてトピックの embed_url を削除することはできません。将来的にはこれが可能になるかもしれません。WP Discourse プラグインにとってより役立つ小さな変更としては、Embed url has already been taken というエラーメッセージを返す際に、Discourse が topic_id も返すようにすることです。そうすれば、WP Discourse プラグインが、どの Discourse のトピックが問題を引き起こしているのかをユーザーに知らせることができます。

「いいね!」 1