Как ограничить количество слов в the_content на главной странице WordPress

16 мар. 2017 г., 20:55:45
Просмотры: 16.4K
Голосов: 0

У меня серьезные проблемы с этим! Я пытаюсь заставить эту страницу показывать только ограниченное количество слов, независимо от того, вставили ли они тег 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()?

0
Все ответы на вопрос 2
3

Попробуйте функцию 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 (например, изображения или встроенные видео) в вывод.

16 мар. 2017 г. 21:01:58
Комментарии

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

rudtek rudtek
16 мар. 2017 г. 21:10:30

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

Ian Ian
16 мар. 2017 г. 21:42:00

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

rudtek rudtek
18 мар. 2017 г. 19:25:57
0

Я не смог решить это с помощью the_content(), поэтому пошел простым путем, и это работает:

        the_excerpt();
        echo '<a href="' . esc_url( get_the_permalink() ) . '"> далее...</a>';
18 мар. 2017 г. 19:26:49