Вопрос или проблема
Я попробовал
<?php $trimmed = wp_trim_words( get_the_content(), 55, "" ); ?>
<?php echo $trimmed; ?>
и
<?php $trimmed = wp_trim_words( the_content(), 55, "" ); ?>
<?php echo $trimmed; ?>
второй вариант с the_content
не работает так, как ожидалось.
Некоторые посты содержат видео в контенте, и когда форматирование удаляется, отображается код встраивания.
ИЗМЕНЕНИЕ: Попробую объяснить более понятно, автор написал посты с изображениями, ссылками на внешние изображения, видео, текстом, отформатированным текстом wysiwyg и т. д., все это в основном поле контента обычного поста. Так что все перечисленные вещи существуют в the_content.
Что автор НЕ сделал, так это использовал поле отрывка или тег и создал действительно длинные посты. Поэтому я пытаюсь создать страницу таких постов, которые обрезаны.
Ну, насколько я понял, вы хотите удалить все HTML-теги из обрезанного the_content
. Правильно???
Попробуйте функцию wp_filter_nohtml_kses
. Надеюсь, это сработает. Вот полный код —
<?php $trimmed = wp_filter_nohtml_kses( wp_trim_words( get_the_content(), 55, "" ) ); ?>
<?php echo $trimmed; ?>
<?php echo force_balance_tags( html_entity_decode( wp_trim_words( htmlentities( wpautop(get_the_content()) ), 40 ) ) ); ?>
Этот код работает для меня для обрезки контента без удаления форматирования
Я использую это:
в вашем functions.php
function custom_trim_content_with_html($text){
$length = 1250;
if(strlen($text)<$length+10) return $text;//не обрезать, если слишком коротко
$break_pos = strpos($text, ' ', $length);//найти следующий пробел после желаемой длины
$visible = substr($text, 0, $break_pos);
$visible = strip_tags( $visible, array('<p>')); // разрешить тег p
return force_balance_tags($visible) . "…";
}
в вашем цикле или коде одиночного поста:
echo custom_trim_content_with_html(get_the_content());
Ответ или решение
Когда речь заходит о необходимости обрезки контента WordPress без потери его форматирования, ваше внимание должно быть направлено на функциональное и гибкое управление содержимым, включая поддержку HTML-тегов. Это особенно важно, если ваши посты содержат разнообразные элементы, такие как изображения, видео и форматированный текст. Давайте рассмотрим, как это можно сделать эффективно и без потери форматирования.
1. Анализ проблемы
Ваша задача — создать обрезанную версию контента, сохраняя при этом HTML-форматирование, что может включать в себя видео, изображения и другие встроенные элементы. Это требует более тонкого подхода, чем просто стандартные функции обрезки содержимого, которые по умолчанию удаляют все HTML-теги, что приводит к возникновению ошибок в разметке.
2. Решение с использованием PHP-функции
На первую очередь, обратите внимание на использование комбинации функций WordPress и PHP, которые позволят сохранить HTML при обрезке.
function custom_trim_content_with_html($text){
$length = 1250; // Укажите желаемую длину
if(strlen($text) < $length + 10) return $text; // Не обрезаем, если текст слишком короткий
$break_pos = strpos($text, ' ', $length); // Находим следующее пробел после заданной длины
$visible = substr($text, 0, $break_pos);
$visible = strip_tags($visible, '<p><img><a><video><div>'); // Разрешаем определенные теги
return force_balance_tags($visible) . "…";
}
3. Интеграция в шаблон
Для интеграции этой функции в ваш код, используйте её в цикле WordPress или на любой странице, где вы выводите контент:
echo custom_trim_content_with_html(get_the_content());
4. Пояснение работы
- Длина текста: В функции
custom_trim_content_with_html
задаётся максимальная длина выводимого текста. - Сохранение разметки: Использование
strip_tags()
позволяет вам указать, какие HTML-теги необходимо сохранить. В данном случае указаны<p>
,<img>
,<a>
,<video>
,<div>
, но их список может быть расширен или сокращён по вашему усмотрению. - Корректировка разметки: Функция
force_balance_tags()
гарантирует, что HTML-код будет корректно закрыт, предотвращая сбои в отображении, вызванные не закрытыми тегами.
5. Дополнительные рекомендации
- Тестируйте на различных типах содержимого: Убедитесь, что тримминг совпадает с вашими ожиданиями для различных типов постов: текст, изображение, видео и т.д.
- Пользовательский ввод: Если авторы активно пишут материалы с различными форматами, регулярно проверяйте, как ваш метод обработки контента влияет на их представление.
- Обновляемость: Следите за обновлениями WordPress, которые могут содержать улучшения функций работы с контентом или безопасности при работе с HTML.
Эти шаги помогут вам не только решить проблему, но и обеспечить более профессиональное и гибкое управление контентом на вашем сайте, что сделает его более привлекательным и удобным для пользователей.