При создании своей темы или доработке чужой основные неприятности возникают в деталях – много времени тратится на решение мелких проблем, связанных с оформлением. Подгонка по ширине, равномерное расположение, подбор размера для гармоничного вхождения в общий дизайн, и прочие детали – все это отнимает массу времени. Одной из проблем является ограничение длины ссылок на посты, если названия постов слишком длинные – они часто выходят за рамки отведенного им пространства, портя всю визуальную картинку. Чаще все приходится ограничивать размер ссылок, указывающих на предыдущий и следующий посты. Чтобы это сделать, можно воспользоваться хуком.
Хук – это такая хитрость, применяемая к функциям. Она позволяет забраться в код функции и на лету, без изменения системных файлов и шаблонов, внедрить в него нужные параметры. Ссылки на предыдущий и следующий посты обычно выводят стандартные функции 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 символов), заменив остальное многоточием. Так же он добавляет в код ссылок определенный класс оформления, с помощью которого можно украсить такую ссылку (например, выделив другим цветом или указав другой размер шрифта).