1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Kategorientext wird kaputt-"sanitized"

Dieses Thema im Forum "Konfiguration" wurde erstellt von Kunstfälscher, 2. November 2017.

  1. Kunstfälscher

    Kunstfälscher Well-Known Member

    Registriert seit:
    17. Februar 2014
    Beiträge:
    71
    Zustimmungen:
    0
    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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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 "← 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?
     
    #1 Kunstfälscher, 2. November 2017
    Zuletzt bearbeitet: 2. November 2017
  2. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    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.
     
  3. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
  4. Kunstfälscher

    Kunstfälscher Well-Known Member

    Registriert seit:
    17. Februar 2014
    Beiträge:
    71
    Zustimmungen:
    0
    Danke euch für die Antworten!

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


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

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    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 <a onclick="alert(1)"> in der Beschreibung einer standard WordPress Kategorie in 4.8.3 nicht der Fall, da wird das onclick=".." entfernt.
     
  6. Kunstfälscher

    Kunstfälscher Well-Known Member

    Registriert seit:
    17. Februar 2014
    Beiträge:
    71
    Zustimmungen:
    0
    Ja: Ich rufe die Backend-Seite auf, der ursprüngliche Text/Code ist noch da.
     
  7. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    Interessant. Dann darf hier jetzt gern ein WooCommerce Experte weitermachen, bei den normalen WordPress Kategorien verhält sich das nämlich anders.
     
  8. Kunstfälscher

    Kunstfälscher Well-Known Member

    Registriert seit:
    17. Februar 2014
    Beiträge:
    71
    Zustimmungen:
    0
    Ich hab's fast befürchtet. :)
    Trotzdem - gibt es keinen Weg, Sanitzation zu unterdrücken? Irgendein Plugin, irgendein Code-Schnipsel, der dabei helfen könnte?
     
  9. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    Siehe oben, versuche es mit einen Shortcode, der den Code ausgibt:

     
  10. Kunstfälscher

    Kunstfälscher Well-Known Member

    Registriert seit:
    17. Februar 2014
    Beiträge:
    71
    Zustimmungen:
    0
  11. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    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.
     
    #11 danielgoehr, 2. November 2017
    Zuletzt bearbeitet: 2. November 2017
  12. Kunstfälscher

    Kunstfälscher Well-Known Member

    Registriert seit:
    17. Februar 2014
    Beiträge:
    71
    Zustimmungen:
    0
    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.

    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.
     
  13. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    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 :)
     
  14. Kunstfälscher

    Kunstfälscher Well-Known Member

    Registriert seit:
    17. Februar 2014
    Beiträge:
    71
    Zustimmungen:
    0
    Danke dir für die Tipps!

    Ja, würde ich wohl, wenn ich JS könnte :) Nun gut, werde mich mal durchhangeln.
    LG
     
  15. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    Im Prinzip musst du nur die onClick Attribute gegen onClick Events mit der jeweiligen ID oder einer eindeutigen Klasse ersetzen:
    https://api.jquery.com/click/

    Es geht zwar sicher auch noch etwas eleganter, aber so sollte es zumindest funktionieren...
     
  16. Kunstfälscher

    Kunstfälscher Well-Known Member

    Registriert seit:
    17. Februar 2014
    Beiträge:
    71
    Zustimmungen:
    0
    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!
     
  17. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    Ist doch super, wenn es damit wie gewünscht funktioniert. Letztendlich führen ja immer viele Wege ans Ziel...
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden