Владельцам и администраторам блогов на WordPress часто требуется изменить отображение ссылок на предыдущий и последующий посты. По сути, следует модифицировать результат отображения функций previous_post_link() и next_post_link().
Для начала напишем функцию-пример, которая модифицирует один единственный входной аргумент — HTML код ссылки. Для примера добавим CSS класс и сократим текст ссылки, если он превышает заданную длину:
/** * Modify function * * @param string HTML link */ function modify_post_link ($link) { // добавим CSS класс $link = str_replace('<a ', '<a class="nav-link" ', $link); // максимальное количество символов $max = 50; // выделим текст ссылки 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', '<strong>modify_post_link</strong>'); // фильтр для следующей ссылки add_filter('next_post_link', '<strong>modify_post_link</strong>');
Теперь ссылки будут проходить через нашу функцию. Пример можно расширить и задать разные функции постобработки для предыдущей и следующей ссылки.