Отображаем похожие статьи в WordPress

Если пользователь прочёл какую-либо статью на вашем сайте, то будет разумно отобразить ему список других статей на ту же тему. Это позволит удержать этого пользователя немного дольше, если какая-нибудь статья из выведенных в этом списке его заинтересует. Для WordPress есть большое количество плагинов, которые позволяют сделать блок с похожими статьями. Я же расскажу вам, как сделать такой блок самостоятельно.

Если вы даже в общих чертах ничего не знаете о PHP, то лучше воспользуйтесь каким-нибудь готовым плагином. Поверьте мне, так будет лучше для всех и для вас особенно.

Мы будем редактировать файлы темы WordPress, поэтому лучше сделать дочернюю тему от той, которую вы используете, если вы этого ещё не сделали.

Откройте на редактирование файл functions.php и добавьте туда строки между  <?php  и ?> :

Троеточие в этом коде означает, что там располагается другое содержимое этого файла, которое было там до внесения этих изменений.

Как видите этого код создаёт объект wp_query и передаёт туда массив параметров. Смысл этих параметров следующий:

  • category__in — сюда передаётся массив с идентификаторами категорий (рубрик)
  • post__not_in — это чтобы в блок не попала ссылка на текущую статью
  • showposts — количество отображаемых записей
  • caller_get_posts — перемещает закреплённые записи статьи в начало
  • orderby — чтобы всегда отображались разные записи

Обратите внимание на класс urvanov-rel-post-block. Он поможет нам стилизовать блок в последствии. Вызов the_permalink() выводит ссылку статью, the_title_attribute() выводит заголовок статьи для всплывающей подсказки,  the_title()  — сам заголовок. Также обратите внимание на вызов wp_reset_postdata() в конце обработки. Он нужен, чтобы вернуть в глобальный объект данные о записи, которые были до нашей обработки. Просто запомните, что он нужен обязательно.

Теперь в том месте темы, где мы хотим отобразить блок со связанными статьями нужно добавить вызов the_urvanov_cat_rel_post(). Обычно этот блок ставится в конце самой статьи. Чтобы сделать так, откройте single.php темы (скопируйте его с родительской темы в свою) и вставьте после вывода содержимого статьи вот такой код:

В этом коде добавлена проверка, чтобы связанные статьи выводились только для страниц с записями. А для всяких вложенных файлов и прочих страниц такой блок не нужен.

Если вы сейчас зайдёте на какую-либо страницу со статьей на своём сайте, то увидите этот блок. Но выглядит он сейчас невзрачно и сильно выделяется от остального форматирования. Чтобы это исправить добавьте в style.css класс urvanov-rel-post-block. Опишите его свойства так, чтобы он не выделялся среди других блоков вашей темы. Можете посмотреть style.css вашей родительской темы, чтобы узнать, какие атрибуты были использованы для других блоков. Для моего сайта я описал вот так:

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *