Описание основных видов вывода записи на WordPress. И модификации the_excerpt и the_content. Например, для вывода конкретного параграфа в цитате поста.
the_content()
Вывод записей поста осуществляется так:
the_content — на странице записей выводит всё содержимое поста; на странице архивов выводит содержимое до тега:
Как поменять вид ссылки «читать дальше…»:
the_excerpt()
Вывод цитаты поста:
С помощью функции the_excerpt(), если имеется цитата, она будет выведена. Если цитаты нет, текст обрежется до 50 слов и в конце вставится: […]. Графика и теги HTML из цитаты вырезаются.
Как сменить окончание цитаты
Для смены текста окончания обрезки […] надо добавить в файл functions.php следующий код:
return '...';
}
add_filter('excerpt_more', 'change_excerpt_more', 99 );
Как уменьшить количество слов в цитате
Так можно поставить ограничение на количество слов:
function change_excerpt_length( $length ) {
return 10;
}
add_filter( 'excerpt_length', 'change_excerpt_length', 999 );
Как в разных местах вывести разные по количеству слов цитаты
$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;
}
$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(']]>', ']]>', $content);
return $content;
}
Вывод записей
или
Как вывести второй по счету параграф в тексте цитаты
С помощью кода ниже можно вставить любой по счету параграф в цитату поста. В данном случае вставляется второй параграф содержимого записи. Также обрезаем количество слов до 30.
Добавить в файл functions.php:
{
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, '...');
}
Выводится через:
А вот конструкция, если цитата имеется, то выводить цитату. В ином случае выводить нашу функцию вырезки параграфа:
if ( has_excerpt() ) {
the_excerpt();
} else {
paragraph_excerpt();
}
?>
А если нужно вставить что-то между абзацами, то для этого нужно воспользоваться подсчетом параграфов поста в WordPress.
Перепиливаю свою старую тему — искал код вывода the_excerpt(); именно с условием — чтобы он выводился только тогда, когда он есть, и нашел ответ только здесь — в последнем примере. Правда в чистом виде не сработало. Думаю, стоит добавить еще такой пример:
(… видимо здесь должен был быть код… к сожалению он стерся при отправке // примечание админа)
С пустым параметром else — может тоже кому пригодится. Спасибо автору за пример. Сам бы в жизни не доехал!
Здраствуйте. А как можно вывести урл картинки в content-excerpt.php через хтмл-код?
Спасибо.
Не понятно какой урл картинки вы хотите вывести. Есть отдельные статьи по миниатюрам записей.
Здравствуйте! В плагине rank math seo и в других плагинах есть возможность вывести определённый текст посредством переменных, например %excerpt% выводит отрывок записи %title% выводит заголовок записи и так далее, но никаким образом не смогу вывести содержимое h2-h6, то есть если в начале записи есть абзац в тегах h3 например, то этот текст игнорируется и выводится первый абзац, если не задана выдержка discription. Мой вопрос в следующем:
Как заставить вывести текст в тегах h2-h6 или отключить игнорирование тегов при автогенерации отрывка?
ХОЧУ ВЫВЕСТИ HTML КОД В ОТРЫВКАХ КАК ЭТО СДЕЛАТЬ?
А как вывести определенный параграф по классу css?