Если the_excerpt ломает шорт-код на странице

0
126
the_excerpt

Иногда для индивидуализации той или иной страницы своего wordpress-сайта у вебмастера возникает необходимость вывести заголовок определенной записи с использованием цитаты (краткого содержания, анонса этой записи).

При этом вставка php-кода осуществляется, например, с помощью плагина Exec-PHP, а для вывода цитаты используется функция the_excerpt().

the_excerpt

Казалось бы, ничего сложного в этом нет, однако если вы на этой же странице используете какие-либо шорт-коды, то они странным образом перестают работать.

Виной тому — капризность функции the_excerpt(), вернее её слабая совместимость с функциями вывода контента с помощью шорт-кодов. Последние в этом случае просто отображаются «как есть» — набор букв с квадратными скобками.

С аналогичной проблемой столкнулся и я. Решение же после долгих поисков нашел на одном из зарубежных форумов.

Для того, чтобы и «волки были сыты и овцы были целы» необходимо внести дополнительный код в файл functions.php вашей темы:

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;
}

Как видим, эта реализация предполагает 56-словесную длину цитаты (по умолчанию 55). Не знаю, именно в этом ли скрывалась причина конфликта, однако после такой доработки всё стало отображаться как надо!



Оставить комментарий

Please enter your comment!
Please enter your name here