Модификация параметров ссылок на посты « предыдущий

Опубликовано: 01.09.2018

видео Модификация параметров ссылок на посты « предыдущий

Криптоапокалипсис близко? Об алгоритме Шора.

Несмотря на то, что шаблоны сайтов на WordPress можно делать красивыми и многофункциональными, все равно часто приходится их «допиливать» уже в процессе наполнения сайта контентом. Есть у WordPress несколько встроенных функций, отображение которых «по умолчанию» может «подпортить» любой дизайн. Одной из таких функций является отображение ссылок на посты  « предыдущий | следующий ».


Команды /fill и /clone в Minecraft 1.8+ [Уроки по Minecraft]

Что не так в этих ссылках? Первое , что мне не нравится в них — это их длина. Ссылки дублируют названия постов, на которые ссылаются, а названия могут быть длинными. На сайтах с фиксированной шириной две такие ссылки гарантированно будут налезать друг на друга, что приведет к смещению одной из ссылок ниже уровня другой. Естественно, это будет смотреться неаккуратно, вроде мелочь — а неприятно. Исправить ситуацию можно, обрезав длинные тексты ссылок, не трогая при этом саму ссылку. Следующий код нужно поместить в файл  function.php  темы оформления:

function modify_post_link ( $ link ) {

$ link = str_replace ( '<a ' , '<a ' , $ link ) ;

$ max = 60 ; //максимальное отображаемое количество символов

preg_match ( '/<a.*?>(.*?)<\/a>/uis' , $ link , $ matches ) ;

$ title = $ matches [ 1 ] ;

$ new_title = mb_strlen ( $ title ) >= $ max ? mb_substr ( $ title , 0 , $ max - 3 ) . '...' : $ title ;

return str_replace ( '>' . $ title . '<' , '>' . $ new_title . '<' , $ link ) ;

}

add_filter ( 'previous_post_link' , 'modify_post_link' ) ;

add_filter ( 'next_post_link' , 'modify_post_link' ) ;

 

Проставляя максимальное отображаемое количество символов в переменной max , можно добиться нужного результата.

Результат работы скрипта:

Второе , что я меняю в отображении ссылок — это независимость их вывода от рубрик. Если в блоге имеется несколько рубрик с опубликованными в разное время постами, то ссылки будут проставляться подряд в зависимости от времени создания, и не зависимо от рубрик, к которым они относятся. Это не всегда правильно, т.к. если мы читаем записи из рубрики N, то мы и не должны видеть ссылку на запись, опубликованную в рубрике W. Отвечают за такое поведение ссылок теги шаблона   next_post_link и previous_post_link , а в частности один из их параметров —   in_same_cat .

Лезем в файл  wp-includes/link-template.php , и разыскиваем строки:

1

2
previous_post_link(‘format’, ‘link’, ‘in_same_cat’, ‘cats’);

next_post_link(‘format’, ‘link’, ‘in_same_cat’, ‘cats’);

Параметр in_same_cat  (тип boolean) и отвечает за вывод ссылки на следующий пост:

true - из той же самой рубрики false (по умолчанию)- из любой рубрики

Эти теги имеют еще несколько параметров:

format  (тип string)  — формат выводимого текста. Здесь должно использоваться ключевое слово ‘%link‘, обозначающее значение параметра  link . По умолчанию: ‘%link &raquo;‘.

link  (тип string)  — анкор ссылки на предыдущую | следующую запись. По умолчанию ‘%title‘ — выводит заголовки записей.

cats  (тип string)  — это ID рубрик, чьи записи надо исключить из вывода. Они перечисляются только через ключевое слово ‘and‘ (при значении параметра  in_same_cat   = true параметр  cats  игнорируется).

rss