Можно ли отфильтровать только шорткод из поста, а затем запустить шорткод?
Моя страница выглядит так:
[summary img="images/latest.jpg"]
This here is the summary
[/summary]
Lots of text here...
И я просто хочу отобразить шорткод на определенной странице.
Пробовал с помощью регулярных выражений, но они, похоже, не работают:
$the_query = new WP_Query('category_name=projects&showposts=1');
//loop
while ( $the_query->have_posts() ) : $the_query->the_post();
echo '<b>';
the_title();
echo '</b>';
echo '<p>';
$string = get_the_content();
if (preg_match("[\\[[a-zA-Z]+\\][a-zA-Z ]*\\[\/[a-zA-Z]+\\]]", $string , $matches)) {
echo "Match was found <br />";
echo $matches[0];
}
echo '</p>';
endwhile;
Есть идеи?
EDIT:
Нашел временное решение.
while ( $the_query->have_posts() ) : $the_query->the_post();
$content = str_replace(strip_shortcodes(get_the_content()),"",get_the_content());
echo do_shortcode($content);
endwhile;
Я видел, что WordPress имеет функцию для чередования коротких кодов, но не для содержимого стрипов Поэтому я заменил раздетую строку содержимого из всего поста, чтобы получить только шорткод. Единственная плохая вещь в этом, что шорткоды должны быть в начале постов.