Как ограничить количество слов в the_content на главной странице WordPress
У меня серьезные проблемы с этим! Я пытаюсь заставить эту страницу показывать только ограниченное количество слов, независимо от того, вставили ли они тег readmore.
Я собирался использовать the_excerpt, но он не добавляет ссылку "Читать далее" в конце отрывка.
Моя главная страница выводит список записей блога с помощью этого кода:
<div class="entry-content">
<?php
/* переводчики: %s: Название текущей записи */
the_content( sprintf(
__( 'читать далее %s <span class="meta-nav">...</span>', 'gateway' ),
the_title( '<span class="screen-reader-text">"', '"</span>', false )
) );
?>
</div>
В моих настройках чтения я установил "Для каждой статьи в ленте показывать" на "анонс".
Итак, мой вопрос: есть ли способ ограничить the_content() или альтернативно добавить "Читать далее" к the_excerpt()?

Попробуйте функцию wp_trim_words()
https://codex.wordpress.org/Function_Reference/wp_trim_words
Однако вы не сможете использовать её с the_content()
, потому что эта функция выводит контент напрямую. Вместо этого используйте get_the_content()
, которая просто возвращает данные.
Пример использования:
echo wp_trim_words( get_the_content(), $num_words, $more_text );
Примечание:
Важно учитывать, что the_content
и get_the_content
возвращают/выводят весь HTML, содержащийся в вашем контенте, тогда как the_excerpt
или get_the_excerpt
возвращают только текст. Выбирайте подходящий вариант в зависимости от того, сколько слов вам нужно и хотите ли вы включать HTML (например, изображения или встроенные видео) в вывод.

Иэн, спасибо за помощь! Я попробовал это и даже вот так: echo wp_trim_words( get_the_content(), 40, '<a href="' . esc_url( get_permalink() ) . '">ДАЛЕЕ</a>'); но ссылка не загружается, а просто продолжает показывать (далее...) Есть идеи?

Попробуй заменить get_permalink() на get_the_permalink() и посмотри, поможет ли это :) Если всё равно не работает, попробуй убрать обёртку esc_url, возможно, она вызывает проблему.

Иэн, это хотя бы добавило ссылку, но работает не совсем корректно. Если в посте меньше 40 слов или если тег more в посте ограничивает отрывок до менее чем 40 слов, он использует ссылку из get_the_content. Но в других случаях он добавляет ссылку поверх. В итоге получается что-то вроде permalink().'more', что ведёт к ошибке 404. Я упростил, так как не смог разобраться. Но всё равно ставлю плюс за попытку. Очень ценю твою помощь.
