Kategorientext wird kaputt-"sanitized"

  • Hallo zusammen,

    ich habe in meiner Kategorienbeschreibung einige versteckte Absätze, die mit einem onclick-Event sichtbar gemacht werden sollen. Der Code ist korrekt, hat auch einige Zeit lang funktioniert, und wurde nicht geändert. Im HTML-Test-Tool von W3Schools funktioniert er ebenfalls.

    HTML
    <div id="infobrief1" style="visibility:visible;"><p style="font-size:0.91em"><a onclick="document.getElementById('infobrief1').style.visibility = 'hidden';document.getElementById('infobrief1b').style.visibility = 'visible';document.getElementById('infobrief2').style.visibility = 'visible';" style="cursor:pointer"><p style="font-size:0.91em"><p style="font-size:0.91em">→ Du möchtest auf dem Laufenden bleiben?</a></p></div>
    <div id="infobrief1b" style="visibility:hidden;"><p style="font-size:0.91em"><a onclick="document.getElementById('infobrief1b').style.visibility = 'hidden';document.getElementById('infobrief1').style.visibility = 'visible';document.getElementById('infobrief2').style.visibility = 'hidden';" style="cursor: pointer;"><p style="font-size:0.91em">← Zurück</a></p></div>        <div id="infobrief2" style="visibility:hidden;"><h3>Du möchtest auf dem Laufenden bleiben?</h3><p style="font-size:0.91em">Wir informieren dich gern über Trends, neue Accessoires und weitere besondere Angebote.<br>Zu unserem Infobrief: <a href="" title="Dein Infobrief"><span style="font-size:1em">→ Bitte hier entlang!</span></a><br>(Erscheint ein- bis max. zweimal im Monat.)</p>
        </div>

    Ich weiß nicht genau, wann die Funktion den Geist aufgegeben hat. Jedenfalls sieht der Code im Backend weiterhin so aus wie oben. Im Quelltext neuerdings aber so:

    HTML
    <div id="infobrief1"><p style="font-size:0.91em"><a style="cursor:pointer"></p><p style="font-size:0.91em"><p style="font-size:0.91em">→ Du möchtest auf dem Laufenden bleiben?</a></p></div><div id="infobrief1b"><p style="font-size:0.91em"><a style="cursor: pointer"></p><p style="font-size:0.91em">← Zurück</a></p></div><div id="infobrief2"><h3>Du möchtest auf dem Laufenden bleiben?</h3><p style="font-size:0.91em">Wir informieren dich gern über Trends, neue Accessoires und weitere besondere Angebote.<br />Zu unserem Infobrief: <a href="" title="Dein Infobrief"><span style="font-size:1em">→ Bitte hier entlang!</span></a><br />(Erscheint ein- bis max. zweimal im Monat.)</p></p></div>

    Zu bestaunen ist das Ergebnis übrigens unter https://halsundschal.de/shop/herrenschals/, dann runterscrollen bis "Du möchtest auf dem Laufenden bleiben?"
    Statt nur eben diesen Satz zu zeigen oder nur das "&larr; zurück" mit Newsletter-Text, zeigt es alles an, und die verberge/zeige-Links funktionieren natürlich nicht.

    Irgendwas macht das. Aber was?
    Seit ich das letzte Mal gesehen hatte, dass es noch funktioniert, habe ich einige Plugins installiert - und nun zum Testen wieder deinstalliert. Keine Änderung. Die Testkonsolen von Chrome, Safari, Opera, Firefox zeigen mir nichts Ungewöhnliches an.

    Habt ihr irgendeine Idee?

    Einmal editiert, zuletzt von Kunstfälscher (2. November 2017 um 17:03)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren


  • Irgendwas macht das. Aber was?

    WordPress selbst macht das. Javascript im Content Editor wird immer entfernt. Und das ehrlich gesagt schon sehr lange. So lange, dass ich (ohne und changelog zu gucken) nicht mal mit Bestimmtheit sagen könnte, seit wann.

    Javascript im Content geht nur per Shortcode.

  • Danke euch für die Antworten!

    WordPress selbst macht das. Javascript im Content Editor wird immer entfernt. Javascript im Content geht nur per Shortcode.

    Hm, onclick="irgendwas" sollte m.E. aber schon gehen ... Oder liege ich da falsch?


    Wird für der Bearbeitung der Kategorienbeschreibung ein Plugin wie Allow HTML in Category Descriptions, Taxonomy TinyMCE oder ein ähnliches Plugin verwendet?

    Nein, bisher nicht. Sollte ich? :-)
    Ich habe gerade Allow HTML in Category Descriptions versucht - dasselbe Ergebnis. :-(

  • Nein, bisher nicht. Sollte ich? :-)


    In Deinem Fall nein. Wenn eines dieser Plugins verwendet wird, kommt damit der Editor TinyMCE und damit die gleiche von danielgoehr genannte "Sanitization" zum Einsatz wie beim normalen WordPress Content Editor.

    Bist Du sicher, dass der fragliche Code im Backend nach dem Speichern der Kategoriebeschreibung tatsächlich erhalten bleibt? Das ist z.B. hier bei Tests mit [FONT=courier new]<a onclick="alert(1)">[/FONT] in der Beschreibung einer standard WordPress Kategorie in 4.8.3 nicht der Fall, da wird das [FONT=courier new]onclick=".."[/FONT] entfernt.

  • Ja: Ich rufe die Backend-Seite auf, der ursprüngliche Text/Code ist noch da.

    Oh ok. Ich bin jetzt davon ausgegangen, dass das auch an der Stelle einheitlich gehandhabt wird. Das Sanitizing bei der Ausgabe statt bei der Eingabe finde ich aber generell sehr ungewöhnlich.

    Aber wenn es zumindest gespeichert wird, könntest du ja theoretisch "nachverfolgen" an welcher Stelle die Tags "rausfliegen". Oder eben die Shortcode-Variante verwenden.

    Edit: Oder statt der onClick-Geschichte deine Scripte in eine JS-Datei auslagern.

    Einmal editiert, zuletzt von danielgoehr (2. November 2017 um 19:53)

  • Ja, es wird immer seltsamer. Ich habe jetzt den ganzen schwierigen Teil in einen Shortcode gewickelt und den testweise unten in die Kategorienseite eingetragen. Und was passiert? Das selbe! :-) Also muss tatsächlich zwischen Abruf und Ausgabe irgendetwas passieren.

    Aber wenn es zumindest gespeichert wird, könntest du ja theoretisch "nachverfolgen" an welcher Stelle die Tags "rausfliegen".

    Hast du einen Tipp für mich, wie ich das mache? Das ist nämlich genau meine Schwierigkeit, dass ich nicht genau festmachen kann, an welcher Stelle das Problem entsteht.


  • Hast du einen Tipp für mich, wie ich das mache? Das ist nämlich genau meine Schwierigkeit, dass ich nicht genau festmachen kann, an welcher Stelle das Problem entsteht.

    Die Daten kommen ja irgendwie aus der Datenbank ins Template. Insofern könntest du jetzt im Template anfangen, dort schauen, welche Funktion den Inhalt ausgibt und wie die funktioniert. Dann ggf. von Funktion zu Funktion "durchhangeln".

    Ich würde an deiner Stelle aber einfach meinen dritten Vorschlag nehmen. Eine JS Datei erstellen, dort die Funktionalität rein und gut ist. Das ist eh "schöner" als Inline-JavaScript, weil Funktion und Inhalt sauberer getrennt ist. Und besser wartbar ist es auch. Und du sparst die eine Menge Stress :)

  • Danke nochmal, danielgoehr!

    Deinem Rat würde ich auf jeden Fall Folge leisten. Inzwischen allerdings habe ich mir mit dem Plugin "Enhanced Category Pages" beholfen.
    Viele Grüße!

  • Danke nochmal, danielgoehr!

    Deinem Rat würde ich auf jeden Fall Folge leisten. Inzwischen allerdings habe ich mir mit dem Plugin "Enhanced Category Pages" beholfen.
    Viele Grüße!

    Ist doch super, wenn es damit wie gewünscht funktioniert. Letztendlich führen ja immer viele Wege ans Ziel...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!