do_shortcode($content) und die Rückgabe mit Paragraphs filtern

  • Ich habe mir Shortcodes gemacht. Wenn ich diese im Visuell Editor verwende, dann macht meist so etwas hier:

    HTML
    [tag-1]
    [tag-a]
    123456789
    [/tag-a]
    [/tag-1]

    Mal ein Beispiel, was ich in den Visual Editor schreibe:

    HTML
    [box number=1]
     [boxarea number=1]
     [B]Aktuelles[/B]
    
    
     [/boxarea]
     [boxarea number=2]
     Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
     [/boxarea]
     [/box]

    Der Quelltext sieht dann so aus:

    Das kann ich in Teilen auch verstehen. Zum Beispiel, dass nach boxarea1 ein </p> kommt. Aber dies müsste auch nach box1 kommen. Tut es aber nicht.

    Diese Paragraphs (also die ungewollten nach den divs) will ich wegbekommen. Ich kriege Sie auch nichts mittels php geparsed, weil angeblich keine da sind. Kennt einer dieses Phänomen und hat dafür eine Lösung.

    • 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

  • Kopier mal den folgenden Code in die functions.php deines Themes

    PHP
    remove_filter('the_content', 'wpautop');

    Klar kann man machen, aber wenn man dies so machen möchte, hat man eben keine Umbrüche mehr durch den Editor.

  • So. Ich glaube ich habe eine Lösung für mein Problem gefunden.
    So wird es im visuellen Editor eingegeben:


    Dieses grauenhafte Ergebnis kommt bei heraus



    Nun habe ich mein Plugin die Zeile gesetzt:

    HTML
    remove_filter('the_content', 'wpautop');

    Innerhalb der Shortcode-Functions stand bis jetzt halt immer nur:

    HTML
    do_shortcode($content);

    Dies habe ich nun wie folgt erweitert:

    HTML
    wpautop(do_shortcode($content))

    Dann kommt dies heraus:


    Und wenn ich nichts übersehen habe, ist die Ausgabe jetzt auch genau so, wie ich es erwartet hätte. Mir bleibt immer noch verborgen, warum der meine </divs> mit nem Paragraph umgeben hat. Habe auch keine Lust mit jetzt die Funktion im Source anzugucken.

Jetzt mitmachen!

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