J'ai codé un shortcode wordpress pour les colonnes qui insère du code HTML via un shortcode. Le problème est que wpautop ajoute des éléments errants p qui rendent le code invalide.
Pour tester mettez ceci dans votre functions.php:
function static_col_container($atts, $content) {
extract(shortcode_atts(array(
'foo' => 'bar'
), $atts));
$content = do_shortcode($content);
$container = '<div class="static-column-container">' . $content . '</div>';
return $container;
}
add_shortcode('static-cont', 'static_col_container');
function static_col($atts, $content) {
extract(shortcode_atts(array(
'space' => '2',
'class' => ''
), $atts));
$content = do_shortcode($content);
$column_container = '<div class="static-column static-column-' . $space . ' ' . $class . '">' . $content . '</div>';
return $column_container;
}
add_shortcode('static-col', 'static_col');
L'utilisation est:
[static-cont]
[static-col]
put some content here...
[/static-col]
[static-col]
put some content here...
[/static-col]
[/static-cont]
Je sais que Wordpress utilise wpautop pour insérer des balises p qui peuvent être désactivées via:
remove_filter('the_content', 'wpautop');
Le problème est que vous devez maintenant entrer vous-même chaque élément p, ce qui est pénible et rend l'éditeur visuel inutile. Quelqu'un at-il trouvé une meilleure solution?
Supprimez le filtre de the_content et exécutez-le après le traitement du shortcode.
Essayer:
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);
Généralement, les codes courts sont traités après l'application de wpautop au contenu. Voir http://core.trac.wordpress.org/browser/tags/3.1/wp-includes/shortcodes.php#L296
J'ai eu le même problème, pas du point de vue de la validation, mais du point de vue du style, où une balise p d'ouverture errante ruinait mon code CSS.
$retour ='<div class="testimonial-meta">'
$retour .='<h5>'.$testimonial_name.',</h5><span>'.$testimonial_details.'</span>';
$retour .='</div>';
return $retour;
Revenait:
<div class="testimonial-meta">
<h5>John Doe,</h5>
<p><span>Company CEO</span></div>
</div>
J'ai corrigé le style en ajoutant dans mon CSS:
.testimonial-meta p{
display:inline;
}
J'espère que cela pourrait être utile à quelqu'un.
Je ne vois pas ce problème sur mon installation locale, j'ai copié votre code de code abrégé, puis mis l'exemple fourni dans une publication, le résultat était le suivant.
<div class="static-column-container"><br>
<div class="static-column static-column-2 "><br>
put some content here…<br>
</div><br>
<div class="static-column static-column-2 "><br>
put some content here…<br>
</div><br>
</div>
Basculer entre HTML et Visual, je le vois toujours.
[static-cont]
[static-col]
put some content here...
[/static-col]
[static-col]
put some content here...
[/static-col]
[/static-cont]
...et rien d'autre..
Des plugins installés, TinyMCE advanced?