Если вы никак не можете разобраться, как сделать так, чтобы на главной и в рубриках выводилось только начало статьи со ссылкой «Читать далее» (или и вовсе какой-нибудь уникальный текст), то этот пост специально для вас.
Ни в одном из нижеперечисленных способов плагинов нам не потребуется.
Сначала разберём самый простой и самый часто использующийся способ. Работает практически для любых тем WordPress.
Хорош этот способ тем, что вы сможете обрезать содержимое поста в любом месте, в котором захотите. Для этого нужно:
Записал видео для полной наглядности:
Этот способ полностью реализует себя, если для вывода анонса постов используются функция 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()
. Если в итоге функция вообще перестанет работать, то это уже вопросы к вашему хостеру.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Михаил, Вы пишете, что шорткоды не будут работать, но не пишете, как сделать чтобы они всё же работали. Надо сделать add_filter('the_content', 'do_shortcode');
Так, мы добавляем фильтр (который по идее и так уже добавлен по умолчанию), но разве описанная выше функция
get_the_content()
содержит его? :)Хотел быстрее отписаться, а получилось как всегда :/
Прошу прощения, конечно же Вы правы, надо do_shortcode(get_the_content())
Подскажите, пожалуйста, уникальная цитата the_excerpt() доступна только для постов? Можно ли реализовать подобный функционал для страниц ?
По умолчанию в админке в настройках экрана для страниц отсутствует дополнительное поле Цитата. И вроде это не глюк моего сайта. Проверял на дефолтной теме при всех отключенных плагинах.
в
functions.php
:)Большое спасибо!
Добрый день, спасибо за статью. У меня вопрос, а как настроить стиль вывода цитаты на странице? То есть на главной странице я хочу выводить несколько цитат, например, 3 и хотела бы, чтобы они размещались горизонтально 3 одинаковых блока. Заранее спасибо. Елена
Добрый день!
Ну через CSS,
float:left;
.а как укротит текст на главной странице по количеству и выводить заголовки страниц
у меня стоит так:
Но я бы хотел сделать так :
вот тут фанкшон код:
Рекомендую там, где выводите содержимое, попробовать использовать функцию:
То есть сначала вставляете в
functions.php
, а потом в том месте в цикле, где нужно вывести, используете:как то не получается ( может вы проверите ?
А что именно не получается? Ошибка какая-то? Или просто ничего не происходит?
Да ничего не происходит однажды я таким способом сделал
как то получилось, после как сайт попал в ддос Аттаку я все с начало сделал потому что у меня бекапа не было ( или может быть я чего то забыл дописать
А если просто попробовать вывести:
Что-нибудь выводится?
Миша, уже наверое пятидесятый раз гугл дает ваш блог на мои нубские запросы. И в пятидесятый раз я решаю свои проблемы благодаря вам. Спасибо. Большое, человеческое)
я рад! 💪🔥