Поддержка Проблемы и решения Нужно что-то вроде if readmore

  • Добрый день, коллеги.

    Есть необходимость сделать вот такую штуку. Есть рубрика, в ней у постов много где, но не везде использован тег <!--more-->. На главной странице статьи выводятся через the_excerpt(), как устроить кастомный вывод ссылки на всю статью не для всех постов, а лишь для тех, у кого тег more действительно есть? Нет ли какой-либо функции вроде is_readmore()?

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Спасибо, но увы, не работает. Ссылка выводится под цитатой из the_excerpt() везде, а не только там, где тег more действительно есть в записи.

    • Ответ изменён 6 лет, 7 месяцев назад пользователем Quazimorda.

    оно работает.
    если у вас не работает — значит что-то не так делаете.

    что-то не так делаете

    Делаю так: в файле functions.php размещаю код:

    function has_more() {
        global $post;
        if (empty($post)) return;
        return (bool) preg_match('/<!--more(.*?)?-->/', $post->post_content);
    }

    В шаблоне, в данном случае в index.php в основном цикле пишу следующее:

    <?php the_excerpt(''); ?>
    <?php if ( has_more() ): ?>
      <span class="read_more"><a href="<?php the_permalink(); ?>">Читать полностью...></a></span>
    <?php endif; ?>

    То есть вывожу цитату записи, а после неё, если тег more в ней имелся, рассчитываю вывести ссылку «Читать полностью…». Ссылка выводится, но выводится для всех без исключения записей, а не только для тех, где тег этот есть внутри. Где я неправ?

    Разобрался. Действие основного цикла разбивается на две части. В первой из них код обновил с использованием функции, а дальше — нет. Спасибо в очередной раз за помощь.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Нужно что-то вроде if readmore» закрыта для новых ответов.