Если вы никак не можете разобраться, как сделать так, чтобы на главной и в рубриках выводилось только начало статьи со ссылкой «Читать далее» (или и вовсе какой-нибудь уникальный текст), то этот пост специально для вас.
Ни в одном из нижеперечисленных способов плагинов нам не потребуется.
Тег «Далее»
Сначала разберём самый простой и самый часто использующийся способ. Работает практически для любых тем WordPress.
Хорош этот способ тем, что вы сможете обрезать содержимое поста в любом месте, в котором захотите. Для этого нужно:
- Перейти на страницу редактирования поста.
- Поставить курсор в то место в тексте, в котором вы хотите его обрезать и нажать кнопку в редакторе Вставить тег «Далее» или кнопку more — в зависимости от того, каким редактором вы пользуетесь (Визуальным или HTML).
- Обновить пост.
Записал видео для полной наглядности:
Применение: функция the_content()
Этот способ полностью реализует себя, если для вывода анонса постов используются функция the_content() или похожая функция get_the_content(), которая возвращает контент, а не выводит. В случае с последней фильтры также не будут применяться — текст не отформатируется, шорткоды не задействуются, однако тег «Далее» будет работать как положено.
При использовании the_content() весь HTML поста сохранится, картинки также будут в анонсе.
Вы вставили тег «Далее», но у вас всё равно выводится целиком весь пост? Смотрите решение проблемы здесь.
Цитата
Второй способ создания анонсов постов — использование поля «Цитата». Этот способ сработает только в том случае, если для вывода анонсов у вас используется the_excerpt()
(её аналог get_the_excerpt()
возвращает цитату, а не выводит).
Если вы не можете найти метабокс цитаты на странице редактирования записи, в правом верхнем углу откройте «Настройки экрана» и включите его там.
Пара слов о том как работают функция the_excerpt()
:
- В первую очередь в качестве анонса поста берется содержимое поля «Цитата».
- Если цитата пуста, тогда анонсом станет неотформатированный текст поста, обрезанный до 55 слов.
- Если в этих 55 словах присутствует тег «Далее», то анонс станет ещё короче.
Постарался показать это на видео:
Собственная функция, обрезающая содержимое поста до определенного количества символов
Код функции представлен ниже, добавляем его в functions.php
текущей темы WP.
function the_truncated_post($symbol_amount) { $filtered = strip_tags( preg_replace('@<style[^>]*?>.*?</style>@si', '', preg_replace('@<script[^>]*?>.*?</script>@si', '', apply_filters('the_content', get_the_content()))) ); echo substr($filtered, 0, strrpos(substr($filtered, 0, $symbol_amount), ' ')) . '...'; } |
Затем, в том месте, в котором нужно вывести анонс, вставляем:
the_truncated_post( 100 ); |
Если при использовании этого метода у вас появятся кракозябры, тогда рекомендую внутри функции the_truncated_post()
, на 3й строке, произвести следующие замены: substr()
=> mb_substr()
, strrpos()
=> mb_strrpos()
. Если в итоге функция вообще перестанет работать, то это уже вопросы к вашему хостеру.
Источник: misha.blog