WordPress: перемещение ссылки “читать далее” в произвольное место
Я уже не раз сталкивался с ситуацией, когда, согласно дизайну, необходимо было в шаблоне WordPress разместить ссылку “Читать далее” в особом месте, а не там, где она выводится по умолчанию. Плюс к этому необходимо было сделать так, чтобы, если в текст статьи не вставлен тег <!--more-->
, то ссылку “Читать далее” не выводить.
Подобные 2 задачи реализуются следующим образом.
Во-первых, в то место шаблона WordPress, где будет отображаться наша особая ссылка “Читать далее”, необходимо вставить следующий код:
<?php if ($pos=strpos($post->post_content, '<!--more-->')) { ?><a href="<?php the_permalink() ?>" class="more">Читать далее</a><?php } ?>
Этим кодом мы проверяем, использовался ли тег <!--more-->
, и, если да, то выводим ссылку.
Во-вторых, осталось удалить ссылку “Читать далее”, которую WordPress выводит по умолчанию. Для этого достаточно в файл functions.php
поместить следующую функцию:
function remove_more_link() { return ''; }
add_filter('the_content_more_link', 'remove_more_link');
Однако стоит иметь в виду, что данная функция не будет работать, если вы используете WordPress версии 2.7.1 или ниже. В последнем случае спрятать ссылку, можно, используя CSS, вот так:
.more-link {display: none}
Вот, собственно, и все.
Единственно, что еще хочется добавить, что в нашей новой ссылке не будет якоря вида more-123
, который присутствует в ссылке по умолчанию. Лично я в нем необходимости не вижу.