2015-04-25 11 views
8

Ich weiß, dass dies muss hundert mal gefragt haben, aber ich habe versucht eine reihe von lösungen die ich finden konnte aber keiner scheint zu funktionieren.p tag formatierung in shortcode inhalt wordpress

Ich habe ein shortcode die Wraps Inhalt:

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

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

ich die folgende Funktion Short in functions.php mit:

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

Dies ist die 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 die leere <p>, die ich habe versucht, mit diesen hier genannten Lösungen zu lösen: remove empty <p> tags from wordpress shortcodes via a php functon und Github jedoch scheint dies <p>shortcode nicht den Inhalt der shortcode zu lösen lösen.

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

Vielen Dank im Voraus für jede Hilfe.

UPDATE

Ok so dieses Stück Code sieht aus wie es funktioniert der Trick:

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 wpautop() Zum Inhalt Nur in Shortcodes)

UND Der Inhalt im Shortcode muss wie t sein sein nicht wie ich oben gezeigt habe:

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

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

Wird bestätigen, wenn es auf allen Shortcodes funktioniert ...

Antwort

2

Wie ich in meiner Frage des aktualisieren dieses Stück Code in der functions.php funktioniert der Trick erwähnt habe: Wie

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

in dieser Frage die Antwort gesehen: https://stackoverflow.com/a/21460343/1275525 und diesen Beitrag: http://www.paulund.co.uk/remove-line-breaks-in-shortcodes (nach unten scrollen zu: Entfernen wpautop() zum Inhalt Nur in Shortcodes)

Es ist auch wichtig, den Inhalt in dem Shortcode getrennt von dem Shortcode-Tags zu haben, sonst wird die erste Zeile wird nicht in <p> Tag enthalten sein:

[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 Kurzwahlnummern in der gesamten Wordpress-Seite überprüft und alle haben die richtige Formatierung. Hoffentlich hilft dies einige guckt da draußen :)

1

Haben Sie versuchen, diese

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

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

und auch Sie können diese Funktion in der functions.php Datei 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); 
} 
Verwandte Themen