WordPress setzt gelegentlich nach und vor Shortcodes leere <p>
Tags, um einen „Break“ vorzugauckeln. Um das zu beheben, hilft ein kleiner jQuery Schnipsel, den du am besten auch über ein Plugin hinzufügst. Setze folgenden Code einfach in deine functions.php
oder in dein Plugin.
Schnipsel
Hier folgen jetzt verschiedene Lösungsansätze. Zum Schluß findest du auch noch eine mögliche Lösung mithilfe eines WordPress-Plugins.
Lösung 1: WordPress & jQuery
/**
* Entfernt leere Absätze
*/
function remove_empty_p_tags() {
echo '<script>jQuery("p:empty").remove();</script>';
}
add_action( 'wp_footer', 'remove_empty_p_tags' );
Code-Sprache: PHP (php)
Lösung 2: jQuery
(function($) {
$('p:empty').remove();
})(jQuery);
Code-Sprache: JavaScript (javascript)
Lösung 3: CSS
p:empty { display: none; }
Code-Sprache: CSS (css)
Lösung 4: WordPress & PHP
Die oben genannten Schnipsel funktionieren leider nicht immer. Ich habe nach einer Alternative gesucht und bin fündig geworden:
/**
* Entfernt Absätze die durch Shortcodes eingefügt werden.
*
* @param string $content
*
* @return string
*/
function shortcode_empty_paragraph_fix( $content ) {
$shortcodes = [
'shortcode_1', // shortcode 1
'shortcode_2' // shortcode 2
];
foreach ( $shortcodes as $shortcode ) :
$array = [
'<p>[' . $shortcode => '[' . $shortcode,
'<p>[/' . $shortcode => '[/' . $shortcode,
$shortcode . ']</p>' => $shortcode . ']',
$shortcode . ']<br />' => $shortcode . ']'
];
$content = strtr( $content, $array );
endforeach;
return $content;
}
add_filter( 'the_content', 'shortcode_empty_paragraph_fix' );
Code-Sprache: PHP (php)
Wichtig ist, dass du deine Shortcodes in den Array
setzt. Den Schnipsel setzt du dann in deine functions.php
oder in dein Plugin. Weitere Informationen, kannst du der Quelle entnehmen:
Wichtig: Setze benutzerdefinierte Inhalte immer mit einem Plugin ein, damit deine Änderungen in der functions.php
nicht von einem Theme-Update überschrieben werden.