Необычные варианты вывода записи в WordPress с the_content и the_excerpt

Admin PHP, WordPress

Описание основных видов вывода записи на WordPress. И модификации the_excerpt и the_content. Например, для вывода конкретного параграфа в цитате поста.

the_content()

Вывод записей поста осуществляется так:

the_content();

the_content — на странице записей выводит всё содержимое поста; на странице архивов выводит содержимое до тега:

<!--more-->

Как поменять вид ссылки «читать дальше…»:

<?php the_content('Читать далее...'); ?>

the_excerpt()

Вывод цитаты поста:

the_excerpt();

С помощью функции the_excerpt(), если имеется цитата, она будет выведена. Если цитаты нет, текст обрежется до 50 слов и в конце вставится: […]. Графика и теги HTML из цитаты вырезаются.

Как сменить окончание цитаты

Для смены текста окончания обрезки […] надо добавить в файл functions.php следующий код:

function change_excerpt_more($more) {
   return '...';
}
add_filter('excerpt_more', 'change_excerpt_more', 99 );

Как уменьшить количество слов в цитате

Так можно поставить ограничение на количество слов:

// Уменьшаем количество слов
function change_excerpt_length( $length ) {
    return 10;
}
add_filter( 'excerpt_length', 'change_excerpt_length', 999 );

Как в разных местах вывести разные по количеству слов цитаты

function excerpt($limit) {
      $excerpt = explode(' ', get_the_excerpt(), $limit);

      if (count($excerpt) >= $limit) {
          array_pop($excerpt);
          $excerpt = implode(" ", $excerpt) . '...';
      } else {
          $excerpt = implode(" ", $excerpt);
      }

      $excerpt = preg_replace('`\[[^\]]*\]`', '', $excerpt);

      return $excerpt;
}
function content($limit) {
    $content = explode(' ', get_the_content(), $limit);

    if (count($content) >= $limit) {
        array_pop($content);
        $content = implode(" ", $content) . '...';
    } else {
        $content = implode(" ", $content);
    }

    $content = preg_replace('/\[.+\]/','', $content);
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]&gt;', $content);

    return $content;
}

Вывод записей

<?php echo excerpt(10); ?>

или

<?php echo content(10); ?>

Как вывести второй по счету параграф в тексте цитаты

С помощью кода ниже можно вставить любой по счету параграф в цитату поста. В данном случае вставляется второй параграф содержимого записи. Также обрезаем количество слов до 30.

Добавить в файл functions.php:

function paragraph_excerpt()
{
    global $post;
    $text = get_the_content();

$what_paragraph_number_we_need = 2;

$buffer = explode ('</p>', $text);

// Started from paragraph number
for ($i = 1; $i < $what_paragraph_number_we_need; ++$i) {
   if (isset($buffer[$i]) && $buffer[$i] != '') {
       $buffer_to_add[$i] = $buffer[$i];
   }
}
$text = implode('</p>', $buffer_to_add) . '</p>';

    // Excerpt number of words
    echo wp_trim_words($text, 30, '...');

}

Выводится через:

paragraph_excerpt();

А вот конструкция, если цитата имеется, то выводить цитату. В ином случае выводить нашу функцию вырезки параграфа:

<?php
if ( has_excerpt() ) {
   the_excerpt();
} else {
   paragraph_excerpt();
}
?>

А если нужно вставить что-то между абзацами, то для этого нужно воспользоваться подсчетом параграфов поста в WordPress.

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Комментарии к статье “Необычные варианты вывода записи в WordPress с the_content и the_excerpt” (6)

  • Виталий
    26.12.2018 в 00:11

    Перепиливаю свою старую тему — искал код вывода the_excerpt(); именно с условием — чтобы он выводился только тогда, когда он есть, и нашел ответ только здесь — в последнем примере. Правда в чистом виде не сработало. Думаю, стоит добавить еще такой пример:

    (… видимо здесь должен был быть код… к сожалению он стерся при отправке // примечание админа)

    С пустым параметром else — может тоже кому пригодится. Спасибо автору за пример. Сам бы в жизни не доехал!

  • Александр
    17.01.2019 в 19:09

    Здраствуйте. А как можно вывести урл картинки в content-excerpt.php через хтмл-код?

    Спасибо.

  • Сурен
    10.03.2023 в 12:12

    Здравствуйте! В плагине rank math seo и в других плагинах есть возможность вывести определённый текст посредством переменных, например %excerpt% выводит отрывок записи %title% выводит заголовок записи и так далее, но никаким образом не смогу вывести содержимое h2-h6, то есть если в начале записи есть абзац в тегах h3 например, то этот текст игнорируется и выводится первый абзац, если не задана выдержка discription. Мой вопрос в следующем:
    Как заставить вывести текст в тегах h2-h6 или отключить игнорирование тегов при автогенерации отрывка?

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

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Необычные варианты вывода записи в WordPress с the_content и the_excerpt"