Цитата записи

Получаем цитату записи

Для текущей записи внутри цикла:

Скопировано
$excerpt = get_the_excerpt();
Показать код

Для записи вне цикла:

С версии WordPress 4.5 можно так:

Скопировано
$excerpt = get_the_excerpt( $post );
Показать код

$post - ID или объект записи

Для более ранних версий WordPress можно так

Скопировано
$excerpt = get_post_field( 'post_excerpt', $post_id );
Показать код

$post_id - ID записи

Выводим цитату текущей записи

Скопировано
the_excerpt();
Показать код

Добавляем переносы строк при выводе цитаты

На сайте текст цитаты выводится без переноса строк, даже если в админке они у цитаты есть. Следующий код добавляет переносы строк при выводе цитаты:

Скопировано
add_filter( 'get_the_excerpt', function( $excerpt ) {
return nl2br( $excerpt );
}, 999 );
Показать код

Подключаем цитату для страниц

В файл функций добавляем такой код:

Скопировано
add_action( 'init', function() {
add_post_type_support( 'page', array( 'excerpt' ) );
});
Показать код

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

Изменяем цитату

Скопировано
$post_data['ID'] = 555;
$post_data['post_excerpt'] = 'новый текст цитаты';
wp_update_post( $post_data );
Показать код

В первой строке надо указать верный ID записи.

Ограничение длины цитаты

В обоих примерах если у записи есть цитата, то текст берем из нее, а если нет, то из контента.

Обрежем цитату записи с ID = 555 до 120 символов:

Скопировано
$post_id = '555';
if( has_excerpt( $post_id ) ) {
$excerpt = get_post_field( 'post_excerpt', $post_id );
} else {
$excerpt = get_post_field( 'post_content', $post_id );
}
$excerpt = strip_tags( strip_shortcodes( $excerpt ) );
$excerpt = mb_substr( $excerpt, 0, 120 ) . ' ...';
Показать код

Обрежем цитату текущей записи до 30 слов:

Скопировано
if( has_excerpt() ) {
$excerpt = get_the_excerpt();
} else {
global $post;
$excerpt = $post->post_content;
}
$excerpt = strip_tags( strip_shortcodes( $excerpt ) );
$excerpt = wp_trim_words( $excerpt, 30, ' ...' );
Показать код