web-dev-qa-db-ja.com

apply_filters( 'the_content') - ショートコードを無視させますか?

私はapply_filters('the_content)を使っているので、バックエンドのwpエディタの中で正しくフォーマットされたコンテンツを見ることができます。

ただし、これはコンテンツに含まれるショートコードもレンダリングします。

ショートコードを無視し、コンテンツの残りの部分にフィルタを適用することを希望します。基本的には投稿をするときと同じことです。バックエンドで投稿コンテンツを表示すると、ショートコードが表示されますが、Webサイトのページ内で表示すると、レンダリングされたショートコード(その結果)が表示されます。

これは可能ですか?

1
BlekStena

ショートコードdo_shortcodeを解析する関数は、デフォルトで優先順位11でthe_contentのフィルタとして追加されています。

remove_filter を使って削除できます。

remove_filter( 'the_content', 'do_shortcode', 11 );

実際にthe_contentを使用する直前にこれを呼び出し、後でそれを追加します(それがその後必要になることは稀ですが)

remove_filter( 'the_content', 'do_shortcode', 11 );
the_content():
add_filter( 'the_content', 'do_shortcode', 11 );
1
engelen