Wer WordPress verwendet und in Artikeln oder Seiten teilweise viel eigenen HTML Code verwendet, dürfte das Problem kennen. WordPress legt manchmal P-Tags um Code Passagen bei denen es einfach nur sinnlos ist und HTML-Fehler verursacht. Dies liegt an der Funktion wpautop, die dafür da ist automatisch P-Tags um Absätze zu legen.
Ich selber habe dieses Problem zum Beispiel immer bei den Vimeo Codes auf dieser Webseite. Um dieses Problem zu umgehen habe ich mir eine kleine aber feine Lösung überlegt. Ich deaktiviere die wpautop Funktion (bzw. entferne den Filter von the_content). Dies macht bei mir Sinn, da ich den meisten HTML-Code selber schreibe und die P-Tags nicht gebrauchen kann.
Wenn ich sie wieder erwarten doch einmal in einem Artikel verwenden möchte, so kann ich sie über die „Benutzerdefinierten Felder“ wieder aktivieren. Diese Möglichkeit ist sehr komfortabel und ermöglicht mir eine weitere Verwendung der Funktion ohne diese komplett abzuschalten.
Als erstes kommt der Part in dem wir die Funktion wpautop komplett entfernen, sämtlichen Code schreiben wir in die „functions.php“ eures Templates, sollte diese noch nicht existieren so legt diese Datei im Template Ordner an:
remove_filter('the_content', 'wpautop');
Mit diesem Code entfernen wir die wpautop Funktion von der the_content() Ausgabe. Mit dieser Zeile wäre wpautop erst einmal komplett deaktiviert. Da wir es später aber über die „Benutzerdefinierten Felder“ wieder aktivieren möchten, schreibt ihr noch folgenden Code darunter:
Du möchtest noch mehr über WordPress erfahren und lernen? Dann schau dir doch einmal mein achtstündiges WordPress-Video-Training an. Es behandelt die verschiedensten Themen rund um WordPress praxisnah und gut verständlich, wie z.B. Theme-Erstellung, MultiSite / Blognetzwerk, eigene Plugins, Custom-Post-Types, Suchmaschinenoptimierung und vieles mehr: WordPress-Video-Training von Pascal Bajorat
function set_wpautop($content){
// $post Variable in der Funktion verfügbar machen
global $post;
// In die Variable $wpautop wird das "Benutzerdefinierte Feld" mit dem Namen "wpautop" geladen
$wpautop = get_post_meta($post->ID, 'wpautop', true);
// Wenn in dem "Benutzerdefinierten Feld" wpautop der Wert "yes" gesetzt wurde,
// dann wird...
if($wpautop=='yes'){
// Die Content Variable mit wpautop Funktion zurückgegeben
return(wpautop($content));
}else{
// oder nur die Content-Variable ohne wpautop Funktion
return($content);
}
}
// Der Filter set_wpautop wird auf the_content angewendet.
add_filter('the_content', 'set_wpautop');
Bei mir hat sich diese Variante bewährt und erleichtert mir das Arbeiten ungemein. Vielleicht hilft diese Funktion ja auch dem einen oder anderen von euch.
Viel Spaß damit.