the_excerpt и шорткоды

18 февр. 2012 г., 07:41:21
Просмотры: 17.7K
Голосов: 7

Я использую 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');
0
Все ответы на вопрос 4
0
12

Вставьте этот код в файл functions.php вашей темы

add_filter( 'the_excerpt', 'shortcode_unautop');
add_filter( 'the_excerpt', 'do_shortcode');
18 февр. 2012 г. 09:13:59
0

В автоматически создаваемых анонсах шорткоды будут удалены WordPress:

Автоматически создаваемый анонс также удаляет все шорткоды и теги. Он обрезается до границы слова, а длина по умолчанию составляет 55 слов.

Однако, если вы используете поле ручного ввода анонса для записи, всё работает.

24 апр. 2015 г. 23:59:59
1

Вот решение для включения вывода шорткодов в автоматически генерируемые анонсы 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 слов.

Надеюсь, это поможет кому-то.

24 сент. 2015 г. 21:24:59
Комментарии

Спасибо большое. Принятое решение не работает для меня и, возможно, просто не работает для "современного" (2016+) WordPress. Однако это делает то, что мне нужно.

Andy Giesler Andy Giesler
16 мар. 2016 г. 21:33:26
0

Также добавьте эти 2 строки в ваш файл functions.php для полных и всеобъемлющих результатов:

add_filter('get_the_excerpt', 'shortcode_unautop');
add_filter('get_the_excerpt', 'do_shortcode');
4 мар. 2015 г. 16:13:47