Как автоматически обрезать ссылки на предыдущий и следующий посты по длине

Как автоматически обрезать ссылки на предыдущий и следующий посты по длине | n-wp.ru

При создании своей темы или доработке чужой основные неприятности возникают в деталях – много времени тратится на решение мелких проблем, связанных с оформлением. Подгонка по ширине, равномерное расположение, подбор размера для гармоничного вхождения в общий дизайн, и прочие детали – все это отнимает массу времени. Одной из проблем является ограничение длины ссылок на посты, если названия постов слишком длинные – они часто выходят за рамки отведенного им пространства, портя всю визуальную картинку. Чаще все приходится ограничивать размер ссылок, указывающих на предыдущий и следующий посты. Чтобы это сделать, можно воспользоваться хуком.

Как автоматически обрезать ссылки на предыдущий и следующий посты по длине

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

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*