Wordpress / PHP - сделать один короткий код
В WP вы можете фильтровать шорткоды из строки и выполнять их функции с do_shortcode($string)
,
Можно ли отфильтровать один шорткод вместо всех зарегистрированных шорткодов?
например, мне нужно несколько шорткодов для постеров с комментариями, но не по понятным причинам:)
1 ответ
Решение
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
на комментарий.