Wiem, że musiałem zadać to setki razy, ale próbowałem znaleźć kilka rozwiązań, ale żaden z nich nie działa.Formatowanie tagów p w kodzie WordPress w słownictwie
Mam shortcode
że owija treść:
[important_note]Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nam vel velit at ex congue aliquet.[/important_note]
używam następującą funkcję shortcode w functions.php
:
function important_note($atts, $content = null) {
return '<div class="imp-note">'.$content.'</div>';
}
add_shortcode("important_note", "important_note");
To otrzymany kod html:
<div class="imp-note">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<p></p>
<p>Nam vel velit at ex congue aliquet.</p>
</div>
Głównym problemem jest pusty <p>
, który mam próbowałem rozwiązać za pomocą tych rozwiązań wymienionych tutaj: remove empty <p> tags from wordpress shortcodes via a php functon i na Github jednak wydaje się to rozwiązać <p>
zawijanie shortcode
, a nie zawartość shortcode
.
Posiadanie pierwszej linii bez zawijania <p>
jest również trochę dziwne, co powoduje, że myślę, że powinienem dodać kod do funkcji shortcode?
Z góry dziękuję za pomoc.
UPDATE
Ok, więc ten kawałek kodu wygląda to załatwia sprawę:
remove_filter('the_content', 'wpautop');
add_filter('the_content', 'wpautop' , 99);
add_filter('the_content', 'shortcode_unautop',100);
Jak widać tutaj: https://stackoverflow.com/a/21460343/1275525 i tutaj: http://www.paulund.co.uk/remove-line-breaks-in-shortcodes (Usuwanie wpautop() do zawartości Only In Shortcodes)
I treść w kodzie musi być podobna do t jego nie tak, jak pokazałem powyżej:
[important_note]
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nam vel velit at ex congue aliquet.
[/important_note]
Treść jest oddzielna od tagów shortcode. Że shortcode outputts następujący kod HTML:
<div class="imp-note">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Nam vel velit at ex congue aliquet.</p>
</div>
potwierdzi czy to działa na wszystkich shortcodes ...