the_excerpt и шорткоды
Я использую the_excerpt на главной странице. Также я использую шорткод dropcap в начале каждого поста. На главной странице посты не отображают букву, заключенную в шорткод dropcap. Если мой пост начинается со слова "Dog", на главной странице отображается только "og". Как заставить шорткоды работать при использовании the_excerpt?
Шорткод
function drcap ($atts, $content = null) {
// Возвращаем контент с оберткой в div с классом dropcap
return '<div class="dropcap">' . do_shortcode($content) . '</div>';
}
// Регистрируем шорткод
add_shortcode('dropcap', 'drcap');
В автоматически создаваемых анонсах шорткоды будут удалены WordPress:
Автоматически создаваемый анонс также удаляет все шорткоды и теги. Он обрезается до границы слова, а длина по умолчанию составляет 55 слов.
Однако, если вы используете поле ручного ввода анонса для записи, всё работает.

Вот решение для включения вывода шорткодов в автоматически генерируемые анонсы WordPress:
add_filter('the_excerpt', 'do_shortcode');
remove_filter('get_the_excerpt', 'wp_trim_excerpt', 10);
add_filter('get_the_excerpt', 'my_custom_wp_trim_excerpt', 99, 1);
function my_custom_wp_trim_excerpt($text) {
if(''==$text) {
$text= preg_replace('/\s/', ' ', wp_strip_all_tags(get_the_content('')));
$text= explode(' ', $text, 56);
array_pop($text);
$text= implode(' ', $text);
}
return $text;
}
Эта реализация предполагает длину анонса в 55 слов.
Надеюсь, это поможет кому-то.
