Как изменить вид ссылки на статью в конце её анонса на странице блога?

Чтобы изменить вид ссылки на статью в конце её анонса на странице блога или в блоке вывода последних записей на главной странице сайта, для начала нужно уточнить, какая именно конструкция выводится в виде анонса — непосредственно анонс статьи (<?php the_excerpt(); ?>) или же содержание статьи (<?php the_content(); ?>) до тэга <!--more-->.

Это можно узнать опытным путём, если Вы не поставите тэг <!--more--> в теле статьи, то на странице вывода всех статей в виде анонсов эта статья будет выводится вся целиком.

В файле шаблона вывода статей также вы встретите одну из конструкций — the_excerpt() или the_content(). Для каждого из этих случаев есть свой вариант решения проблемы.

Создаем ссылку «Читать дальше…» в конце анонса статьи

Если выводится анонс статьи (для the_excerpt()), вставляем в конец файла темы functions.php следующий код:

add_filter( 'excerpt_more', 'new_excerpt_more' );
function new_excerpt_more( $more ){
 global $post;
 return '<a href="'. get_permalink($post) . '" class="more_link">Читать дальше...</a>';
}

Удаление конструкции […] на конце

По умолчанию, если текст обрезается, то в конце добавляется конструкция […]. Изменить […] можно через фильтр excerpt_more. Добавим такой код в файл functions.php:

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

Изменение длины обрезаемого текста

По умолчанию анонс составляет 55 слов. Чтобы изменить этот параметр, можно использовать фильтр excerpt_length, для этого поместите такой код в конец файла functions.php:

add_filter( 'excerpt_length', function(){
	return 20;
} );

Оформление тэга <!—more—> в виде ссылки «Читать дальше…»

Если в виде анонса статьи выводится её содержание (the_content()) до тэга <!--more-->, то в конец файла темы functions.php вставляем следующий код:

add_filter( 'the_content_more_link', 'true_target_blank_to_read_more', 10, 2 );
function true_target_blank_to_read_more( $more_link, $more_link_text ) {
     // $more_link_text - анкор (текст) ссылки по умолчанию
     // $more_link - HTML ссылки по умолчанию
     global $post;    
     return '<a href="'. get_permalink($post) . '" class="more_link">Читать дальше...</a>';
} 

В обоих случаях мы получаем нужную нам ссылку с классом more_link.


0 комментариев

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *