При создании своей темы или доработке чужой основные неприятности возникают в деталях – много времени тратится на решение мелких проблем, связанных с оформлением. Подгонка по ширине, равномерное расположение, подбор размера для гармоничного вхождения в общий дизайн, и прочие детали – все это отнимает массу времени. Одной из проблем является ограничение длины ссылок на посты, если названия постов слишком длинные – они часто выходят за рамки отведенного им пространства, портя всю визуальную картинку. Чаще все приходится ограничивать размер ссылок, указывающих на предыдущий и следующий посты. Чтобы это сделать, можно воспользоваться хуком.
Хук – это такая хитрость, применяемая к функциям. Она позволяет забраться в код функции и на лету, без изменения системных файлов и шаблонов, внедрить в него нужные параметры. Ссылки на предыдущий и следующий посты обычно выводят стандартные функции previous_post_link и next_post_link. Нам нужно ограничить длину анкоров (текст ссылки), не трогая сами ссылки. Для этого внедрим хук – откроем файл functions.php и добавим в него следующий код:
//Модификация параметров html у ссылки
function modify_post_link ($link) {
// добавим CSS класс
$link = str_replace('<a ', '<a class="nav-link" ', $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;
// возвращаем модифицированный HTML код ссылки
return str_replace('>'.$title.''.$new_title.'<', $link);
}
// фильтр для предыдущей ссылки
add_filter('previous_post_link', 'modify_post_link');
// фильтр для следующей ссылки
add_filter('next_post_link', 'modify_post_link');
Этот код позволяет сократить анкор ссылки до указанного количества символов (в вышеуказанном примере это 60 символов), заменив остальное многоточием. Так же он добавляет в код ссылок определенный класс оформления, с помощью которого можно украсить такую ссылку (например, выделив другим цветом или указав другой размер шрифта).







