web-dev-qa-db-ja.com

投稿コンテンツからHTMLタグを削除する 'the_content'フィルタ

私はこのような投稿内容(html)を持っています:

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

私がecho $post['post_content'];またはecho do_shortcode($post['post_content']);を使っているとき、内容はうまく現れます。しかしecho apply_filters('the_content', $post['post_content']);を使うとき、いくつかのhtmlタグは投稿から削除されます。出力は次のようになります。

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

コンテンツフィルタを使用して投稿の正確なHTMLコンテンツを取得する方法

1
sariDon

あなたは投稿コンテンツに任意のHTMLを入れるべきではなく、代わりにショートコードを使うべきです!ショートコードはこの状況のた​​めのものです。

さもなければあなたは2つの問題に直面する:

  • フィルタは出力時にwp_kses_postを介してコンテンツをエスケープします
  • TinyMCEは、ビジュアルエディタを使用しているときに、ほんのわずかな時間であっても、タグを/ mangle/stripします。

これらはすべてセキュリティ目的で行われており、コンテンツにはレイアウトやUIではなく、コンテンツのみが含まれています。必要な場合は、ウィジェットを使用するか、コンテンツ内にショートコードを入れてください。

1
Tom J Nowell