3 способа создания анонса записи в WP. Как ограничить длину анонсов.

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

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

Ни в одном из нижеперечисленных способов плагинов нам не потребуется.

Тег «Далее»

Сначала разберём самый простой и самый часто использующийся способ. Работает практически для любых тем 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(). Если в итоге функция вообще перестанет работать, то это уже вопросы к вашему хостеру.

По теме

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии