Обычно ссылка на продолжение записи выводится там, где она и задумана выводиться – в месте разделения текста. И если вы попытаетесь установить эту ссылку в другое место, то придется прибегать к хитростям.
Обычно ссылка «Читать далее» формируется автоматически функцией the_content, и отображается, как я уже писал, в области разделения текста специальным тегом [code inline=”yes”]. Но иногда дизайн блога требует вывода этой ссылки в другом месте – справа, слева, под текстом, вообще в отдельной панели.
Казалось бы, сделать это легко, достаточно сформировать ссылку вида [code inline=”yes”]http://ваш-блог/пост#more-ID_поста. Однако тут нужно учитывать, что в некоторых постах нет тега more, и поэтому ссылка такого вида будет неточной, да и ненужной. Тут нужен другой подход – предварительно проверять, присутствует ли тег more в посте или нет.
Для начала нужно избавиться от стандартной ссылки «Читать далее». Сделать это можно с помощью фильтра, добавленного в файл functions.php:
function remove_more_link() { return ''; } add_filter('the_content_more_link', 'remove_more_link');
Следующим шагом является использование в нужном месте шаблона специальной ссылки на продолжение поста, заключенного в специальное условие:
post_content, '')) { ?><a href="#more-" class="more-link">Читать далее</a>
Этот код использует две функции:
- the_permalink – возвращает прямую ссылку на пост
- the_ID – возвращает ID поста
Следует учитывать, что код нужно вставлять в цикл вывода записей, иначе он не сможет определить ID и ссылку поста. Нас интересует размещение подобной ссылки в записях на главной странице (или в различных архивах). Значит вставлять этот код нужно внутри цикла
if ( have_posts() ) : while ( have_posts() ) ... endwhile
Код ищет в содержимом поста специальный тег more, и если он есть, то выводит ссылку вида [code inline=”yes”]http://ваш-блог/пост#more-ID_поста в нужном вам месте. Вы можете придать ссылке индивидуальное оформление, используя в css класс more-link.