p-Tag-Formatierung im Shortcode-Inhalt WordPress

Lesezeit: 3 Minuten

Benutzer-Avatar
j.grima

Ich weiß, dass dies hundertmal gefragt worden sein muss, aber ich habe eine Reihe von Lösungen ausprobiert, die ich finden konnte, aber keine scheint zu funktionieren.

Ich habe ein shortcode das umschließt den Inhalt:

[important_note]Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Nam vel velit at ex congue aliquet.[/important_note]

Ich verwende die folgende Shortcode-Funktion in functions.php:

function important_note( $atts, $content = null ) {
    return '<div class="imp-note">'.$content.'</div>';
}
add_shortcode("important_note", "important_note");

Dies ist der resultierende HTML-Code:

<div class="imp-note">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    <p></p>
    <p>Nam vel velit at ex congue aliquet.</p>
</div>

Das Hauptproblem ist das Leere <p> das ich versucht habe, mit diesen hier erwähnten Lösungen zu lösen: Entfernen Sie leere

-Tags aus WordPress-Shortcodes über eine PHP-Funktion und so weiter GitHub Dies scheint jedoch zu lösen <p> Verpackung der shortcode nicht der Inhalt der shortcode.

Die erste Zeile ohne haben <p> Wrapping ist auch etwas seltsam, was mich denken lässt, dass ich der Shortcode-Funktion Code hinzufügen sollte?

Vielen Dank im Voraus für jede Hilfe.

AKTUALISIEREN

Ok, also sieht dieses Stück Code so aus, als würde es den Trick machen:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99);
add_filter( 'the_content', 'shortcode_unautop',100 );

Wie hier zu sehen: https://stackoverflow.com/a/21460343/1275525 und hier: http://www.paulund.co.uk/remove-line-breaks-in-shortcodes (Entfernen von wpautop() zum Inhalt nur in Shortcodes)

UND Der Inhalt im Shortcode muss so sein, nicht wie oben gezeigt:

[important_note]
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nam vel velit at ex congue aliquet.
[/important_note]

Der Inhalt ist von den Shortcode-Tags getrennt. Dieser Shortcode gibt den folgenden HTML-Code aus:

<div class="imp-note">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    <p>Nam vel velit at ex congue aliquet.</p>
</div>

Wird bestätigen, ob es bei allen Shortcodes funktioniert …

Benutzer-Avatar
j.grima

Wie ich in meiner Frage erwähnt habe, aktualisieren Sie dieses Codestückchen in der functions.php macht den Trick:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99);
add_filter( 'the_content', 'shortcode_unautop',100 );

Wie in der Antwort auf diese Frage zu sehen: https://stackoverflow.com/a/21460343/1275525 und diesem Beitrag: http://www.paulund.co.uk/remove-line-breaks-in-shortcodes (scrollen Sie nach unten zu: Entfernen von wpautop() zum Inhalt nur in Shortcodes)

Es ist auch wichtig, dass der Inhalt im Shortcode von den Shortcode-Tags getrennt ist, da sonst die erste Zeile nicht umbrochen wird <p> Schild:

[important_note]
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nam vel velit at ex congue aliquet.
[/important_note]

HTML-Ausgabe:

<div class="imp-note">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
    <p>Nam vel velit at ex congue aliquet.</p>
</div>

Ich habe die Shortcodes auf der gesamten WordPress-Site überprüft und alle haben die richtige Formatierung. Hoffentlich hilft das ein paar Leuten da draußen 🙂

Haben Sie dies versuchen

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

Für mehr Informationen: http://codex.wordpress.org/Function_Reference/wpautop

Außerdem können Sie diese Funktion in der Datei functions.php hinzufügen

add_filter('the_content', 'remove_empty_p', 20, 1);
function remove_empty_p($content){
    $content = force_balance_tags($content);
    return preg_replace('#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $content);
}

1386140cookie-checkp-Tag-Formatierung im Shortcode-Inhalt WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy