Как задать длину цитаты (excerpt) или изменить ее вид

10.07.2020

Цитата записи (excerpt) выводится внутри цикла таким кодом:

<?php the_excerpt(); ?>

По умолчанию, она обрежется длиной в 55 слов и в конце будут такие символы […], что не очень красиво и не совсем понятно для юзера, можно ли на это кликнуть (можно, но ничего не произойдет).

Итак, пример кода, чтобы цитата заканчивалась многоточием и ссылкой на запись:

/* Excerpt more */
function new_excerpt_more($more) {
    global $post;
    return '... <a class="read-more" href="'. get_permalink($post->ID) . '">[Read more]</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');

В таком случае текст цитаты и ссылка будут внутри тега <p></p>, что позволит проще использовать инлайновые стили для кнопки “Читать далее“.

Если цитата указана через админку, тогда ссылка “Читать далее” не будет выводиться с этим кодом, будет выводиться только тот текст, который указан в отрывке.

Как вариант, можно сделать так, чтобы цитата заканчивалась просто многоточием, а ссылку в нужном формате задать уже в коде:

/* Excerpt more */
function new_excerpt_more($more) {
    global $post;
    return '...';
}
add_filter('excerpt_more', 'new_excerpt_more');

Задаем ссылку на пост после цитаты в коде:

<?php the_excerpt(); ?>
<a href="<?php the_permalink(); ?>">Read more</a>

Только надо учитывать, что в таком варианте цитата будет внутри тега <p></p>, а ссылка после него. Что так же может быть удобно для определенного дизайна, когда кнопка читать далее вынесена из цитаты. И, в этом случае, ссылка Read more будет выводиться всегда, даже если Цитата указана в админке в поле Отрывок.

Как задать определенную длину для цитаты (excerpt)

По умолчанию в цитате выводится 55 слов (не символов), если сама цитата не задана в админке в настройках поста (Отрывок).

Добавляем в файл functions.php такую функцию, где 24 – это количество слов в цитате:

/* Excerpt more length */
function new_excerpt_length($length) {
    return 24;
}
add_filter('excerpt_length', 'new_excerpt_length');

Если цитата указана через админку в поле “Отрывок“, тогда она не будет обрезаться и будет использоваться в том виде, в котором указана в админке.

Полезная инфа:

Оставить комментарий