web-dev-qa-db-fra.com

Filtre 'the_content' supprimant les balises HTML du contenu de la publication

J'ai un contenu de publication (html) comme celui-ci:

<div id="home_tabs">
<ul>
    <li><a href="#tabs-1">Nunc tincidunt</a></li>
    <li><a href="#tabs-2">Proin dolor</a></li>
    <li><a href="#tabs-3">Aenean lacinia</a></li>
</ul>
<div id="tabs-1">
<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus.</p>
<p><a class="jqbut" href="#">read more</a></p>
</div>
<div id="tabs-2">Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc.</div>
<div id="tabs-3">Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti.</div>
</div>

Lorsque j'utilise echo $post['post_content']; ou echo do_shortcode($post['post_content']);, le contenu s'affiche correctement. Mais lorsque vous utilisez echo apply_filters('the_content', $post['post_content']);, certaines des balises HTML sont supprimées de la publication. La sortie est comme ça:

<a href="#tabs-1">Nunc tincidunt</a>
<a href="#tabs-2">Proin dolor</a>
<a href="#tabs-3">Aenean lacinia</a>
<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus.</p>
<p><a class="jqbut" href="#">read more</a></p>
Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc.
Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti.

Comment obtenir le contenu HTML exact de la publication en utilisant le filtre de contenu?

1
sariDon

Vous ne devriez pas mettre du HTML arbitraire dans le contenu d'un post, utilisez plutôt des codes courts! Les codes courts étaient destinés à cette situation.

Sinon, vous faites face à 2 problèmes:

  • Les filtres échapperont à votre contenu via le wp_kses_post en sortie
  • TinyMCE filtrera/réduira/supprimera les balises lorsque vous utiliserez l'éditeur visuel, même pour le moindre moment.

Toutes ces opérations sont effectuées à des fins de sécurité, le contenu ne doit contenir que du contenu, pas de présentation ni d’interface utilisateur. Si vous en avez besoin, utilisez des widgets ou insérez des codes courts dans votre contenu.

1
Tom J Nowell