Как задать длину цитаты (excerpt) или изменить ее вид - Студия MetaDiv (МетаДив)
  • Пн. - Вс. с 9:00 до 19:00
  • +7 915 457 11 34
  • info@metadiv.ru
  • г. Москва

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

Цитата записи (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');

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