Как скрыть часть текста на странице архивов? (Текст выведен через the_content())?
Я пытался добавлять фильтр, возвращать часть строки, но у меня либо не выводился контент, либо строка не обрезалась.
Вообще я думал использовать the_excerpt(), но тогда ссылки не выглядит как ссылки на превью.(Не кликабельны)
В общем мне нужно понять либо как вывести только часть текста на архивах с помощью the_contnet()
Либо как включить ссылки и форматирование текста с помощью the_excerpt()
Обрезал строку с помощью какой то фукнции которая возвращает обрезаную строку strg что то такое, я уже не помню.
Сейчас я просто пока вывел через the_content(), а тот код я взял с SO и не могу его найти.
return там не было,но ответ был заплюсованным
godsplane, фильтр без return не вернет ничего, так и должно быть. Он принимает данные, обрабатывает и потом обратно их должен вернуть. Найдите код, тогда смогу помочь.
/**
* Trim content on archive pages.
*
* @param string $content
* @return string
*/
function trim_content_on_archive($content)
{
// If we're on archive page, modify content.
if (is_archive())
{
// Strip all HTML tags so they don't break your layout.
$content = strip_tags($content);
// Trim content to 200 characters but make sure the words aren't chopped.
$content = preg_replace('/\s+?(\S+)?$/', '', substr($content, 0, 201));
// Append ellipsis to the end of the string.
$content .= ' ...';
}
// Return the (optionally modified) content from the filter.
return $content;
}
add_filter('the_content', 'trim_content_on_archive');
Вот результат вывода the_content() на странице архива:
Игорь Воротнёв, спасибо, но теперь это вылилось в ту же проблему что и с the_excerpt(). Форматирование текста нарушается и ссылки становятся не кликабельными
это вылилось в ту же проблему что и с the_excerpt(). Форматирование текста нарушается и ссылки становятся не кликабельными
Это не баг, это фича. Мы вырезаем специально ВСЕ HTML теги, с помощью $content = strip_tags($content);
Зачем это делается? Потому что есть вероятность, что строка будет обрезана посередине тега, например в первые 200 символов попадет <a href="https://some.url/, а закрывающая часть "> будет обрезана, потому что достигнут лимит в 200 символов. И все, с этого места и до конца страницы у вас одна большая сломанная ссылка. Чтобы этого не произошло, теги вырезаются.
Собственно, в этом ответе я продемонстрировал эту проблему - вот как выглядит мой ответ если не оборачивать эти фрагменты ссылки в тег code:
и я так понял вы в регулярке зашифровали слово any? Почему просто не написать any?
1. В регулярках ничего не зашифровывается
2. Там нет никакого any
3. Что делает данная регулярка:
Игорь Воротнёв, понял, что в таком случае делать?
У меня есть вариант с заданием фиксмированной высоты описанию архива и скрытие остального текста, но по мне это сильно костыльно. может есть еще варианты?
godsplane, вам принципиально выводить форматирование в этом фрагменте? Если да - тогда самый разумный вариант предоставить кастомное поле "lead content", в виде wysiwyg редактора. Хранить это поле в метаданных. Выводить как отдельное, целиком, вместо the_content. Выводить как есть, со всеми тегами. Единственный минус - туда руками контент писать надо. Статья (основной текст) отдельно, вот этот короткий анонс - отдельно. Может прозвучать как лишняя работа контент-редактору, но в реальности если вам не плевать на СЕО, то так и должно быть - ручные анонсы с правильными ключевыми словами принесут намного больше пользы, чем автоматически сгенерированные из начала большого текста.
godsplane, с помощью CSS в принципе можно решить, но имхо это костыль. Заказчик не насекомое, должен все-таки быть обучаем. Это же не rocket science :)