Как определить, что в посте есть тег «ещё»?

Создавая один из проектов понадобилось выводить посты по разному, в зависимости от того, есть ли в посте тег «ещё» или «more» на английском.

Оказалось, что сделать это достаточно просто:

Вариант 1(рекомендуемый):

<?php
    if( strpos( $post->post_content, '<!--more-->' ) ) {
        the_content();
    }
    else {
        the_excerpt();
    }
?>

Вариант 2:

<?php
    if( strpos( get_the_content(), 'more-link' ) === false ) {
        the_excerpt();
    }
    else {
        the_content();
    }
?>

Вариант 3:

<?php
    if( preg_match( '/<!--more(.*?)?-->/', $post->post_content ) ) {
        the_content();
    }
    else {
        the_excerpt();
    }
?>

Как это работает:

  1. Получаем из базы пост
  2. Проверяем, есть ли в нем тег <!—more—>
  3. Выводим контент удобным для нас способом

Leave a Comment