Решение проблемы с тегом more на статичных страницах

В WordPress существует два способа отображения цитат в блоге. Первый их них — это использование тега the_excerpt(), второй — применение тега more. С помощью тега more можно определить участок записи, который будет отображаться на главной странице блога. С этим часто возникают различные проблемы, поскольку тег more работает только на домашней странице, которая содержит список записей. Указанный тег перестает работать на других страницах. Недавно мы столкнулись с аналогичной проблемой и, благодаря форумам WordPress, быстро смогли отыскать для нее решение. Если вы хотите подключить тег more для страниц, чтобы выводить неполные записи, используйте следующий код внутри цикла:

<?php
global $more;
$more = 0;
?>
//код должен быть добавлен перед вызовом the_content

<?php the_content('Continue Reading'); ?>

http://www.wpbeginner.com/wp-themes/fixing-the-read-more-tag-problem-in-wordpress-static-pages

Блог про WordPress
Комментарии: 42
  1. Илья

    Сделал как Вы сказали: в директории с темой, в файле page.php вставил код. Статья была урезана, появилась надпись "Читать полностью", все вроде ОК, но при нажатии на "Читать полностью", ничего не происходит. Если поможете решить проблему, буду очень Вам благодарен.

  2. Владимир

    Илья, у меня аналогичная проблема. Нажимаю на: more и ничего не вижу.

  3. Андрей

    Та же проблема

  4. Дмитрий (автор)

    Попробуйте следующее:

    Добавьте после последней строки следующий код:

    <?php $more = true; ?>
    1. Дмитрий (автор)

      Т.е. код будет выглядеть так:

      <?php global $more; $more = FALSE; ?>
       
      <?php the_content('Read more &rarr;'); ?>
       
      <?php $more = TRUE; ?>
  5. Андрей

    не помогает

  6. Аноним

    А у меня вообще ничего не изменилось — ни статья не урезалась, ничего

  7. Дмитрий

    Спасибо, за статью. Все заработало.

  8. Марина

    Простите, а можно для чайников путь к коду описать?)) буду благодарна

    1. Дмитрий (автор)

      надо найти файл с циклом. Он имеет вид:

      <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

      Обычно располагается в файле index.php, но может находиться и в других шаблонах в зависимости от используемой темы.

  9. Валерий

    Я вообще не нашел ничего (

  10. Tata

    Спасибо! Все работает, совет очень пригодился — смогла обрезать статьи в сайдбаре на страницах постов.

  11. Василий

    Спасибо, все заработало. Как же долго я искал ответ. Спасибо еще раз Вам и Вашему блогу!

  12. Виктор

    Спасибо! Хорошая статья в смысле понимания кода. Но мне не помогло. Нашел три файла с циклами page.php; single.php; index.php Вписывал код внутри цикла по обеим вариантам, с текстом так ничего и не произошло. Тема f2. Может быть код нужно вводить во все три указанных файла?

    1. Дмитрий (автор)

      Вот еще небольшое дополнение: первоначальный код должен вставляться ДО вызова the_content(), но ПОСЛЕ вызова the_post(). Только тогда он будет работать.

      Вставлять в цикл в index.php.

      Вот пример правильной вставки:

      <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <?php global $more; $more = 0; ?>
          <div class="post" id="post-<?php the_ID(); ?>">
      	<div class="entry">
      	 <?php the_content('Read the rest of this entry &raquo;'); ?>
      	 </div>
      1. Александр

        Вставь в файле page.php у меня тоже F2 и все прекрасно работает

        1. Александр

          Вставляешь только вот это

          //The code must be inserted ahead of the call to the content

  13. Алексей

    вставил код — ничего не происходит

  14. Алексей

    сайт вообще не загружается

  15. Alexey

    Спасибо Спасибо !)) спасибо))))

  16. Алексей

    Здравствуйте, подскажите у меня проблемма с тегом more .Я нашел фаил с цыклом, но он выглядит не так как вы показываете.
    Вот как у меня

  17. Алексей

    у меня за место the_content, art_content

    1. Дмитрий (автор)

      art_content? Не может такого быть. Код лучше выкладывайте скриншотом со ссылкой.

  18. Алексей

    Здрасте еще раз, вот высылаю скрин http://prntscr.com/aoetu7

  19. Алексей

    Здравствуйте, по поводу моего скрина вышлите хоть какие-нибудь коментарии пожалуста.

    1. Дмитрий (автор)

      В вашем случае сложно сказать, где и что нужно изменить, поскольку у вас тема, которой нет в оф. хранилище тем WP. У нее могут быть заданы какие-то свои настройки.

      Вы пробовали вставлять тег more в контент записи? (это отдельная кнопка в редакторе).

      Если пробовали, и запись не урезается, то в таком случае нужно попытаться заменить в коде the_content на the_excerpt.

      У вас открыт на скрине шаблон page.php. Но, возможно, вам нужно смотреть другие шаблоны и искать в них.

  20. Алексей

    Здравствуйте, на главнои странице тег more работает, мне бы хотелось, чтоб на других страницах роботало тоже

    1. Дмитрий (автор)

      Посмотрите мой комментарий от 04.01.2014 at 01:03. Я там приводил пример правильной вставки кода.

      1. Дмитрий (автор)

        И рекомендую делать это, если вы знаете, как потом восстановить сайт. Он может перестать работать после таких изменений, и надо будет вручную по FTP заходить и все откатывать обратно.

  21. exilon13

    а если мне нужно сделать это не для записи а для страници? (в страницах тег «more» не работает)? Заранее спасибо за ответ.

    1. Дмитрий (автор)

      Эта короткая заметка как раз и относится к страницам.

      1. exilon13

        да нет же, к записям применяется, а при использовании на странице не действует…

  22. Александр

    Добавил в шаблон

    Сатья обрезается и формируется ссылка «Читать полностью ->» с линком «…./#more-308» который никуда не ведет…
    Что не так?
    (Тема sydney)

  23. Александр

    Добавил в шаблон

    			<div class="entry-content">
    				<?php while ( have_posts() ) : the_post(); ?>
    					<?php global $more;$more = false; ?>
    					<?php the_content('Читать полностью &rarr;'); ?>
    					<?php $more = true; ?>
    				<?php endwhile; ?>
    

    Сатья обрезается и формируется ссылка «Читать полностью ->» с линком «…./#more-308» который никуда не ведет…
    Что не так?
    (Тема sydney)

  24. Леонид

    Ставьте легкий плагин Wp-showhide,с кодом [showhide type=»post» more_text=»Показать больше…» less_text=»Показать меньше…»]
    Текст, который нужно скрыть
    [/showhide] Скрывает текст в любом месте поста без заморочек

    1. Максим

      установил этот плагин, почему-то не работает код showhide

      1. Дмитрий (автор)

        Надеюсь, вы его не из комментария выше копировали? :) Т.к. там могли порезаться кавычки или другие управляющие символы.

  25. cnfc

    Вот, что мне помогло:
    В файле archive.php меняете:

    на

  26. cnfc

    Что-то не отобразилось.
    Вместо кода вывода анонса, с помощью php the_excerpt, который стоит в archive.php
    ставите код с index.php php the_content

    1. Дмитрий (автор)

      Спасибо за пояснение. У нас режется код для защиты.

  27. Roman

    В официальной теме Big Blue (https://wordpress.org/themes/big-blue/) подскажите пожалуйста куда копать (хотя в идеале, конечно, решение), чтобы включить тег more для страниц кроме главной и записей. В записях работает, а просто на любой новой странице не получается включить. More включается в этом шаблоне через the_excerpt() вроде бы.

    1. Дмитрий (автор)

      Здравствуйте!

      Лучше всего уточните по этой опции у разработчиков на форуме. Поскольку они дадут максимально грамотное решение касательно именно этой темы.

      Вот тут по-английски опишите. Должны будут ответить.

      https://wordpress.org/support/theme/big-blue/

Добавить комментарий

Получать новые комментарии по электронной почте.