Behebe defekte Bilder für Beiträge, die mit den WP Discourse und RSS Plugins erstellt wurden

Es gibt einen Fall, in dem Bilder, die über die WP Discourse- und RSS-Plugins an Discourse veröffentlicht werden, beschädigt sein können. Dies kann auftreten, wenn der vollständige Beitragsinhalt mit dem WP Discourse-Plugin an Discourse veröffentlicht wird und der WordPress-Classic-Editor zum Veröffentlichen des Beitrags verwendet wird. Es kann auch bei Beiträgen auftreten, die mit dem RSS Polling-Polling an Discourse übertragen werden, wenn die Einstellungsoption „Eingebettete Beiträge kürzen" nicht aktiviert ist.

Das Problem tritt auf, wenn Discourse versucht, Bilder herunterzuladen, die dem Beitrag hinzugefügt wurden. Wenn der Download des externen Bildes zu einem Markdown-Bild-Tag führt, der in HTML-Tags eingebettet ist, wird das Bild beschädigt angezeigt.

Wenn Beiträge von WordPress veröffentlicht werden, sollte das Problem behoben sein, indem vom Classic-Editor auf den Block-Editor zum Veröffentlichen der Beiträge umgestellt wird. Ist dies nicht möglich oder löst es das Problem nicht, besteht eine Workaround-Lösung darin, Discourse daran zu hindern, externe Bilder herunterzuladen.

Wenn Sie die Domains kennen, von denen die externen Bilder veröffentlicht werden, können Sie verhindern, dass Discourse diese Bilder herunterlädt, indem Sie die Domain(s) zur Site-Einstellung „Deaktivierte Bild-Download-Domains" hinzufügen:

Wenn Sie sich nicht sicher sind, welche Domains verwendet werden, können Sie verhindern, dass Discourse alle externen Bilder herunterlädt, indem Sie die Option „Externe Bilder lokal herunterladen" deaktivieren. Beachten Sie, dass das Deaktivieren dieser Einstellung zu beschädigten Bildern auf Ihrer Site führen kann. Wenn möglich, ist es besser, nur das Herunterladen externer Bilder von bestimmten Domains zu verhindern, die Sie kontrollieren.

5 „Gefällt mir“

Darf ich nach weiteren Details dazu fragen? Alle meine Seiten verwenden den klassischen Editor, aber nur wenige nutzen ein Plugin, um Markdown als Eingabe zu rendern (der Plugin-Bereich für Markdown-Parsing ist ausgetrocknet, daher greifen die Leute meist auf Jetpack zurück).

Geht es dabei um den Fall, dass ein Markdown-Parsing-Plugin über dem klassischen Editor läuft? :thinking:

Das Problem tritt auf, wenn HTML in folgender Form an Discourse gesendet wird. Es tritt am häufigsten auf, wenn ein Thema über die API an Discourse gepostet wird:

<p><img src="remote-image-domain/..."/></p>

Jedes äußere Tag um das Bild-Tag verursacht das Problem, zum Beispiel <figure><img src="remote-image-domain/..."/></figure>

Wenn Discourse versucht, das Remote-Bild herunterzuladen, wird für das erste Beispiel folgendes Markdown generiert:

<p>![](upload://6zqK52dO23i1JsYH2oyMU12U2ro.jpeg)</p>

Dies führt zu einem defekten Bild. Es kann manuell behoben werden, indem der Discourse-Beitrag wie folgt bearbeitet wird:

<p>

![](upload://6zqK52dO23i1JsYH2oyMU12U2ro.jpeg)
</p>

Eine einfachere Lösung besteht jedoch darin, Discourse über die Site-Einstellung „disabled image download domains“ daran zu hindern, das Remote-Bild herunterzuladen.

Für Beiträge, die mit dem Block-Editor von WP Discourse veröffentlicht werden, versucht das Plugin, das Problem zu beheben, indem es den Beitrag vor der Veröffentlichung an Discourse mit folgendem Code verarbeitet:

Es könnte möglich sein, eine ähnliche Lösung für den Classic Editor umzusetzen. Allerdings steht bei Verwendung des Classic Editors die WordPress-Funktion parse_blocks nicht zur Verfügung, sodass die Lösung komplexer wäre. Ich hoffe, dass das Problem schließlich durch Änderungen im Kern von Discourse behoben werden kann.

3 „Gefällt mir“

Vielen Dank, Simon! Ich verstehe das Problem, tolle Erklärung. :slight_smile:

1 „Gefällt mir“

Hallo Simon,
vielen Dank für WP Discourse. :slight_smile:

Ich hatte das gleiche Problem mit Bildern. Ich habe dies genutzt, um Bilder lokal herunterzuladen, was – wie du oben erklärt hast – die Bilder beschädigt hat. Danach habe ich das WordPress-HTML in Markdown konvertiert und den konvertierten Text manuell in Discourse eingefügt. Das funktioniert gut, ist aber manuell.
Ist es möglich, einen Konverter zu integrieren, um dies beim Export aus WordPress automatisch durchzuführen?

Vielen Dank!

1 „Gefällt mir“

Wenn du den WordPress-Blockeditor zum Veröffentlichen von Beiträgen verwendest, sollte die Konvertierung automatisch erfolgen. Wenn du den klassischen Editor verwendest, musst du das HTML in Discourse manuell korrigieren, um defekte Bilder zu vermeiden.

Lass mich wissen, ob du den Blockeditor verwendest und trotzdem Probleme mit defekten Bildern hast.

Es könnte möglich sein, eine ähnliche Funktionalität für Beiträge hinzuzufügen, die mit dem klassischen Editor veröffentlicht wurden, aber der dafür erforderliche Code wäre komplexer als bei der Umsetzung mit dem Blockeditor.

1 „Gefällt mir“

Ich verwende den Block-Editor (Gutenberg), aber es sind einige Plugins von Drittanbietern installiert. Vielleicht verursacht das das Problem mit den defekten Bildern. Ich verwende auch einige Gallery-Plugins von Drittanbietern auf WordPress.

Das Galerie-Plugin könnte die Ursache des Problems sein. Das WP Discourse-Plugin sucht vor dem Festlegen des Beitragsinhalts, der an Discourse veröffentlicht wird, nach allen Blöcken im Beitrag, deren blockName auf core/image oder core/gallery gesetzt ist. Der HTML-Code für Bilder in diesen Blöcken wird in ein Format umgeschrieben, das von Discourse verarbeitet werden kann.

Es ist möglich, dass Bild-Plugins, die auf Ihrer Website verwendet werden, Blocknamen nutzen, die nicht behandelt werden. Wie lautet der Name des von Ihnen verwendeten Galerie-Plugins?

Ich verstehe… Ich benutze das zwar, aber mir ist gerade aufgefallen, dass dies bereits nicht mehr unterstützt wird. Ich werde die Bilder also wieder in die Standardgalerie konvertieren und versuchen, die Discourse-Themen zu aktualisieren. Das muss das Problem sein, entschuldigen Sie bitte.

1 „Gefällt mir“

Ich habe zum Block-Editor gewechselt (das muss irgendwann geschehen, da die Unterstützung für den klassischen Editor nächstes Jahr endet), aber das hat das Problem nicht behoben. Die Bilder waren auf Facebook gehostet.

Kannst du die Bild-Markup im WordPress-Beitrag überprüfen, indem du im Seitenbereich den ‘Code-Editor’ auswählst? Ich möchte wissen, in welchem Block (falls vorhanden) sich die Bilder befinden:

Das WordPress-Plugin verwendet Blocknamen, um die Bilder zu analysieren. Befindet sich das Bild nicht in einem Block, den das Plugin derzeit verarbeitet, wird seine Markup nicht bereinigt.

1 „Gefällt mir“

Der WP-Beitrag war ein Copy-Paste von Facebook; hier ist ein Beispiel des HTML-Codes.
Die Bilder waren Bild-Emojis:

<div dir="auto"><span class="pq6dq46d tbxw36s4 knj5qynh kvgmc6g5 ditlmg2l oygrvhab nvdbi5me sf5mxxl7 gl3lb2sf hhz5lgdu"><img src="https://static.xx.fbcdn.net/images/emoji.php/v9/t34/1/16/1f914.png" alt="🤔" width="16" height="16"></span>Comment ? Vous avez 1 mois pour nous envoyer vos plus beaux poèmes et/ou dessins sur le thème du monocycle, ce qu’il vous évoque, votre passion pour ce sport, etc.</div>

Ich habe in der Blockeditor nicht die gleiche Seitenleiste wie du, daher habe ich den Block-HTML-Inhalt mit dieser Option angezeigt:

Sollte das Problem daran liegen, dass es sich nicht um „normale

1 „Gefällt mir“

Ja, ich denke, das Problem liegt darin, dass der HTML-Code in den WordPress-Beitrag kopiert wurde. Das WP Discourse-Plugin sollte in der Lage sein, Bilder zu verarbeiten, die über einen Bild-Block hinzugefügt wurden. Es ist jedoch nicht so konfiguriert, dass es den HTML-Code für Bilder repariert, die auf andere Weise eingefügt werden.

Idealerweise könnte Discourse HTML-Bild-Tags verarbeiten, die von anderen HTML-Tags umschlossen sind, aber das ist ein komplexes Problem. Möglicherweise lässt sich das WP Discourse-Plugin so aktualisieren, dass es auch Bilder verarbeitet, die außerhalb von Bild-Blöcken hinzugefügt werden. Ich hatte gehofft, dass die Unterstützung von Bild-Blöcken die meisten Fälle abdecken würde, aber es gibt scheinbar viele Ausnahmen davon.

3 „Gefällt mir“

Hallo,

ich habe diesen Thread und den anderen Hauptthread zu Bildern durchgelesen.

Das Veröffentlichen eines Auszugs meiner Website auf Discourse funktioniert einwandfrei. Wenn ich jedoch auf die Schaltfläche „Vollen Beitrag anzeigen

[quote=“bobbysmith, post:14, topic:160773”]
Allerdings scheint es beim Klicken auf die Schaltfläche „Vollen Beitrag anzeigen

Hallo,

vielen Dank, Simon, für deine sehr schnelle Antwort.

Ich habe deine Vorschläge ausprobiert, konnte das Ergebnis jedoch nicht ändern. Das liegt wahrscheinlich eher an meinen mangelnden Discourse-Kenntnissen als an sonst etwas.

Dein erster Vorschlag war, sicherzustellen, dass der Beitrag Inhalt hat. Die Beiträge enthielten tatsächlich Inhalt, daher glaube ich nicht, dass das das Problem war. Du hast auch empfohlen, die Einstellung „How to Configure the allowed embed selectors

Das könnte die Ursache für das Problem mit diesem Bild sein. Ich werde mir das ansehen.

Ich bin mir nicht sicher, was hier los sein könnte. Wenn deine Discourse-Seite öffentlich ist, kannst du mir dann einen Link zu einem Thema mit diesem Problem schicken? Du kannst mir den Link gerne auch in einer PN senden, wenn du möchtest.

Nochmals vielen Dank dafür. Die Seite befindet sich noch im Staging und ist nicht öffentlich. Könnte das das Problem sein?

Außerdem funktioniert die Oneboxing aus irgendeinem Grund nicht. Wenn ich einen Link von beispielsweise CNN.com einfüge, funktioniert die Oneboxing einwandfrei, aber von meiner Staging-Seite ohne HTTPS wird nur ein Link eingefügt. Liegt das daran, dass die Staging-Seite nicht sicher ist?

Dass die Discourse-Seite privat ist, sollte kein Problem verursachen. Verbergen Sie die WordPress-Seite auf irgendeine Weise? Falls die WordPress-Seite die Anfragen von Discourse blockiert, um den vollständigen Beitragstext abzurufen, würde dies zu einem Fehler führen.

Die Discourse-Seite ist öffentlich. Ich würde sie gerne während der Entwicklung verstecken, habe aber nicht herausgefunden, wie man sie in die Testumgebung (Staging) verschiebt. Ich habe eine Haupt-WP-Seite, die sich in der Testphase/Entwicklung befindet und die privat/versteckt ist.

Ich kann eine Kategorien-Update über das WP-Plugin erzwingen. Ich gehe (wohl fälschlicherweise) davon aus, dass dies bedeutet, dass Discourse die Hauptseite kontaktieren kann, auch wenn diese sich in der Testumgebung befindet.