Я знаю, что этот вопрос довольно старый сейчас, но так как ни один из ответов не решил его, я расскажу о том, как немного по нему разобраться.
Если вы пытаетесь разместить шорткод из своего контента вв другой области вашей темы вам нужно зарегистрировать фильтр и добавить вызов, для которого вы хотите запустить шорткод.Допустим, нам нужен шорткод с функциональностью, аналогичной той, что вы пытаетесь сделать в своем вопросе, - но я собираюсь начать его с самого начала для всех, кому это интересно.
Мы начнемзарегистрировав новый шорткод для вывода видео по прямой ссылке на YouTube, такой как https://www.youtube.com/watch?v=eh7lp9umG2I, чтобы пользователям не приходилось выполнять разбор вручную (нам действительно нужен только последний параметр).
После этого нам нужно зарегистрировать фильтр.В этом случае, так как мы хотим извлечь это видео из содержимого и поместить его где-то еще, мы будем применять фильтр к «the_content».
Далее мы создадим функцию, чтобы убедиться, что мызахватите копию шорткода до того, как фильтр удалит его - просто оставьте все СУХОЙ.
Наконец, нам просто нужно вывести видео.
function your_shortcode_handler($atts)
{
$url = $atts['video'];
if (isset($url))
{
$type = 'application/x-shockwave-flash';
$url = str_replace("watch?v=", 'v/', $url);
$obj = "<object data='$url' type='$type'><param name='src' value='$url' /></object>"
return $obj;
}
}
add_shortcode('your_shortcode_name', 'your_shortcode_handler');
function your_shortcode_filter($content)
{
$pattern = "/\[your_shortcode_name(.*?)\]/";
$content = preg_replace($pattern, '', $content);
return $content;
}
add_filter('the_content', 'your_shortcode_filter');
function stealFromContent($content)
{
$pattern = "/\[your_shortcode_name(.*?)\]/";
$match = null;
preg_match($pattern, $content, $match);
if (is_array($match) and $match[0] != '')
{
return $match[0];
}
return '';
}
//somewhere in the template you're wanting to add the video to
//BEFORE the_content is called.
$youtube_video = stealFromContent();
//then
echo $youtube_video; //wherever you want it.
Теперь ответим на вопрос автора.Выбранный тип человека, который написал этот плагин, не использует шорткод.Он выполняет регулярное выражение для the_content, подобное тому, что я делал выше, а затем передает эти значения в библиотеку javascript.
Когда вызывается do_shortcode, он анализирует все шорткоды и игнорирует значения, не относящиеся к шорткоду.Хорошей подсказкой было то, что предоставленный вами шорткод просто не является шорткодом - [пространство слов слово пространство] недопустимо.
Исходный файл для справки.