2015-04-25 17 views
8

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

Odpowiedz

2

Jak już wspomniano w Aktualizacji moje pytanie jest ten kawałek kodu w functions.php załatwia sprawę:

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

Jak widać na to pytanie jest odpowiedź: https://stackoverflow.com/a/21460343/1275525 i tym poście: http://www.paulund.co.uk/remove-line-breaks-in-shortcodes (Przewiń w dół do: Usuwanie wpautop() do zawartości Only In shortcodes)

ważne jest również, aby mieć zawartość w sHORTCODE odrębny od znaczników shortcode, poza pierwsza linia nie zostanie owinięty w <p> tagu:

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

wyjście 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> 

Mam sprawdzone shortcodes całym WordPress miejscu i wszyscy mają poprawne formatowanie. Mam nadzieję, że to pomaga kilku kumpli tam :)

1

Czy spróbować tej

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

Aby uzyskać więcej informacji: http://codex.wordpress.org/Function_Reference/wpautop

a także można dodać tę funkcję w pliku functions.php

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); 
}