WP では、文字列からショートコードをフィルタリングし、フックされた関数を で実行できますdo_shortcode($string)
。
登録されているすべてのショートコードではなく、単一のショートコードをフィルタリングすることはできますか?
たとえば、コメント投稿者にもいくつかのショートコードを使用できるようにする必要がありますが、明らかな理由ですべてではありません:)
function do_shortcode_by_tags($content, $tags)
{
global $shortcode_tags;
$_tags = $shortcode_tags; // store temp copy
foreach ($_tags as $tag => $callback) {
if (!in_array($tag, $tags)) // filter unwanted shortcode
unset($shortcode_tags[$tag]);
}
$shortcoded = do_shortcode($content);
$shortcode_tags = $_tags; // put all shortcode back
return $shortcoded;
}
これは、グローバルをフィルタリングし$shortcode_tags
、実行してdo_shortcode()
から、すべてを以前の状態に戻すことで機能します。
使用例;
$comment = do_shortcode_by_tags($comment, array('tag_1', 'tag_2'));
tag_1
これにより、ショートコードとコメントが適用されますtag_2
。