Если вы никак не можете разобраться, как сделать так, чтобы на главной и в рубриках выводилось только начало статьи со ссылкой «Читать далее» (или и вовсе какой-нибудь уникальный текст), то этот пост специально для вас.
Ни в одном из нижеперечисленных способов плагинов нам не потребуется.
Тег «Далее»
Сначала разберём самый простой и самый часто использующийся способ. Работает практически для любых тем WordPress.
Хорош этот способ тем, что вы сможете обрезать содержимое поста в любом месте, в котором захотите. Для этого нужно:
Записал видео для полной наглядности:
Применение: функция the_content()
Этот способ полностью реализует себя, если для вывода анонса постов используются функция the_content() или похожая функция get_the_content(), которая возвращает контент, а не выводит. В случае с последней фильтры также не будут применяться — текст не отформатируется, шорткоды не задействуются, однако тег «Далее» будет работать как положено.
При использовании the_content() весь HTML поста сохранится, картинки также будут в анонсе.
Вы вставили тег «Далее», но у вас всё равно выводится целиком весь пост? Смотрите решение проблемы здесь.
Цитата
Второй способ создания анонсов постов — использование поля «Цитата». Этот способ сработает только в том случае, если для вывода анонсов у вас используется the_excerpt()
(её аналог get_the_excerpt()
возвращает цитату, а не выводит).
Если вы не можете найти метабокс цитаты на странице редактирования записи, в правом верхнем углу откройте «Настройки экрана» и включите его там.
Пара слов о том как работают функция the_excerpt()
:
Постарался показать это на видео:
Собственная функция, обрезающая содержимое поста до определенного количества символов
Код функции представлен ниже, добавляем его в 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()
. Если в итоге функция вообще перестанет работать, то это уже вопросы к вашему хостеру.