Похожие статьи WordPress без плагина

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

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

Создать список похожих статей с миниатюрами и без, можно чистым кодом php или плагином. Каждый выбирает свой путь.

До недавнего времени у меня на блоге использовался для этого плагин WordPress Related Posts. Хороший плагин, красиво можно оформить, под любой дизайн, вывод похожих статей.

Только вот в борьбе за скорость загрузки сайт я решил заменить этот плагин на простой код. Потому что этот плагин тормозил загрузку моего блога от 0,5 до 0,9 секунды в зависимости от времени и нагрузки.

И поэтому я решил использовать код php для вывода похожих статей, который позволяет выводить статьи, сортирую их по тегам или категориям (рубрикам).

Как вывести похожие статьи с сортировкой по тегам.

Как правило, список похожих статей выводится в конце статьи. В большинстве тем WordPress за статьи (записи) отвечает файл single.php. Именно в этот файл нужно вставить код, отвечающий за вывод похожих статей.

Предупреждение: сделайте резервную копию файла single.php перед началом работ.

Шаг 1: поиск места для вставки кода.

У всех нас разные шаблоны и структура их немного отличается друг от друга. К примеру, в моей теме, вообще, нет файла single.php. Я создал дочернюю тему, и все доработки делаю через файл функции темы. А это на порядок сложней, чем править обычные файлы.

Для определения правильного места вставки кода, вам нужно сначала посмотреть на станицу, найти на ней основные элементы и тогда в исходном коде вам будет проще найти необходимое место для код.

Визуальный анализ шаблона
Визуальный анализ шаблона

Как видно на скриншоте, подходящее место для вставки кода, находится после окончания статьи, перед навигацией.

Итак, открываете административную панель Вордпресс – «Внешний вид»«Редактор»«Одна запись (single.php)». И в файле ищите код, отвечающий за вывод статьи. Выглядеть он будет примерно так:

<?php while (have_posts()) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
...
Анализ кода в шаблоне
Анализ кода в шаблоне

После этого фрагмента можно вставить код похожих статей. В моём примере дальне будет идти код навигации.

Шаг 2: вставка кода похожих статей.

После того как вы определились с местом, вставляете вот этот код:

<!--Похожие статьи-->
<?php
 global $post;
 $backup = $post;
 $tags = wp_get_post_tags($post->ID);
 if ($tags) {
 $tag_ids = array();
 foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
 
$args=array(
 'tag__in' => $tag_ids,
 'post__not_in' => array($post->ID),
 'posts_per_page'=>5, // Количество вывода похожих статей.
 'ignore_sticky_posts'=>1
 );
 $my_query = new wp_query($args);
 if( $my_query->have_posts() ) {
 echo '<ul class="relatedPosts"><h2>Похожие статьи по теме:</h2>';
 while ($my_query->have_posts()) {
 $my_query->the_post();
 ?>
 <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Перейти к статье <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
 <?php
 }
 echo '</ul>';
 }
 }
 $post = $backup;
 wp_reset_query();
 ?>

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

Похожие статьи по тегам
Похожие статьи по тегам

Внешний вид списка будет соответствовать дизайну вашего сайта, так как стили, определённые в шаблоне, распространяются и на этот список.

Но, если вы захотите внести изменения в стили, то вы всегда можете использовать класс relatedPosts и задать свои стили. Этот класс я уже добавил в основу списка.

Также вы можете изменить в коде элементы, отмеченные оранжевым цветом.

Как вывести похожие статьи с сортировкой по рубрикам (категориям).

К примеру, вы захотите вывести похожие статьи не по тегам, а по категории. Предложив посетителю, ознакомится с похожими материалами из этой категории.

Тогда, действуя по описанному выше алгоритму, вы вставляете вот этот код:

<!--Похожие статьи-->
<h2>Похожие статьи из категории: <?php the_category( ', ' ) ?></h2>
<div><?php
 global $post;
 $backup = $post;
 $categories = get_the_category($post->ID);
 if ($categories) {
 $categories_ids = array();
 foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
 
$args=array(
 'category__in' => $category_ids,
 'post__not_in' => array($post->ID),
 'posts_per_page'=>5, // Количество похожих статей.
 'ignore_sticky_posts'=>1
 );
 $my_query = new wp_query($args);
 if( $my_query->have_posts() ) {
 echo '<ul class="relatedPosts">';
 while ($my_query->have_posts()) {
 $my_query->the_post();
 ?>
 <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Перейти к статье <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
 <?php
 }
 echo '</ul>';
 }
 }
 $post = $backup;
 wp_reset_query();
 ?></div>

Этот код сортирует статьи только по категории. Теги уже не играют никакой роли.

Похожие статьи в категории
Похожие статьи в категории

В качестве дополнительных настроек можно использовать параметр 'orderby'=>rand. Который определяет вывод похожих материалов в случайном порядке.

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

'posts_per_page'=>5, // Количество похожих статей.
'orderby'=>rand, // Вывод в случайном порядке.
'ignore_sticky_posts'=>1

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

А теперь я предлагаю посмотреть видеоурок, в котором я покажу, как проанализировать шаблон, выбрать место для вставки и вставить код.

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

На этом у меня сегодня всё. Я желаю вам удачи и до встречи в новых статьях и видеоуроках.

С уважением, Максим Зайцев.

Понравилась статья? Поделиться с друзьями:
Комментарии: 24
  1. Иван

    Привет, у меня к тебе вопрос :) Вот у тебя есть бесплатный курс «как набрать текст голосом». Я тоже хочу создать одностраничник на своём сайте. Дело в том, что создать поддомен не проблема, а как его реализовать я не могу понять.

    Например, создаю поддомен и у меня отображается существующий сайт. То бишь, если http://1zaicev.ru/ — то поддомен допустим promo.1zaicev.ru — причём оба будут считаться как один сайт, при входе в админку меняется тема и на основном сайте. Короче, у меня получился просто клон моего сайта.

    Я хотел спросить, как ты реализовывал одностраничник. Я вчера пытался сделать, сегодня — и через плагины и вручную, а также хотел установить CMS — но вообще ничего не нашёл. Заранее спасибо :)

    1. Максим Зайцев (автор)

      Вань, привет. Зачем тебе морочиться с поддоменом. Сделай как я, одностраничник в отдельной папке. Мой бесплатный курс расположен по адресу http:/1zaicev.ru/spic/. В этой папке расположен каркас страницы index.html и стили style.css. Ну и конечно изображения для оформления страницы. Всё, ничего лишнего. Не надо ни каких поддоменов, установки на них движка и плагинов.

  2. Николай

    Несмотря на то, что я сделал копию файла single.php, я запорол сайт после введения вашего кода. Хорошо, что на хостинге была резервная свежая копия сайта. Вы не подскажете, где конкретно мне вставить код. Я бы вам выслал копию своего файла «Одна запись».

    1. Максим Зайцев (автор)

      Здравствуйте, Николай. Такое иногда бывает. Вот почему перед началом любых работ над сайтом нужно делать резервную копию всего сайта или тех файлов с которыми намерены работать.
      У вас после статьи идёт видео и блок рекламы Адсенс. Это блок заключён в абзац (тег Р), а сразу на ним идёт закрытие блока ДИВ. Вставьте код перед закрытием блока див.
      Если не понятно, тогда пришлёте мне файл. Желаю удачи!

      1. Николай

        Маским, а куда вам выслать файл?

        1. Максим Зайцев (автор)

          Присылайте на maksim@1zaicev.ru

  3. Mila

    Спасибо,Максим за обширную и очень понятно изложенную статью.
    На практике пока применять не пробовала, но уже одно то, что советы не отпугивают сложностью и заумность радует.
    Всегда рада размещать твои материалы у нас в Клубе комп.Пенсионеров.
    Успехов !

    1. Максим Зайцев (автор)

      Mila, методика не сложная и реализовать её легко. А если будут трудности, я всегда готов помочь решить любые возникшие трудности. Спасибо за доверие и публикации в клубе. Удачи!

  4. Александр

    Возможно, некоторым новичкам правильнее для этих целей использовать плагин — просче это!
    Любой код нужно дорабатывать самому: если ни полностью перестраивать под свой сайт.
    Эхех-х…
    Удачии………

    1. Максим Зайцев (автор)

      Здравствуйте, Александр. В том то и дело, что новички используют слишком много плагинов. А в этом коде почти ничего менять не надо. Можно вообще ничего не менять. А вот чтобы изменить внешний вид списка, можно и добавить несколько стилей. В любом случае этому нужно учится, так как не будешь же по каждой мелочи обращаться к специалисту.

      1. Александр

        Привет, Максим!
        Ну, в общем — да! Это, я как-то не подумавши брякнул. Да и признаться, к коде глубоко не разбирался… все они одинаковы.

        Просто, я, с той колокольни звонил, что подобные коды более необходимы нежели другие, ибо — это прямое и нужное улучшение блога — а потому и плагин не грешно.
        А у новичков обычно, всё подряд заплагинено)
        Сужу исключительно по себе в молодые лета) !!

        1. Максим Зайцев (автор)

          Ведя совой сайт нужно приходится постоянно что-то улучшать, дорабатывать и переделывать. Поэтому хотят новички или нет а вникать в это нужно. К чему я и призываю всех владельцев сайтов и блогов. А не имея хоть малого представления о том, что нужно делать, трудно даже специалисту объяснить, что нужно. ;-)

  5. Сергей

    Здравствуйте, Максим!
    Совершенно справедливо! Конечно, учится нужно.
    И с предыдущим оратором, Александром, согласен.
    Но — тут возникает закономерный вопрос о правильном обучении: ибо неправильное обучение ведёт по граблям…

    1. Максим Зайцев (автор)

      Здравствуйте, Сергей. Да, всё правильно. Но, как узнать где правильно, а где нет. Если человек до этого с подобными вопросами не сталкивался. Нужно изучать тему, присматриваться к авторам, и со временем появится опыт и учителя, которые учат правильно. ;-)

  6. Михаил

    Не получается у меня сделать похожие записи. Все дело в том, что у меня в single.php код не закрывается, на определенных местах. Вот так он выглядит:

    Вот по идее мне нужно вставить код «вывода похожих статей» после этого: <?php while (have_posts()) : the_post(); или после этого: get_template_part( 'content', get_post_format() );
    Проблема в том, что когда вставляю в эти места код, происходит ошибка и страница не загружается.
    Если вставить код перед: то он отобразиться, но к сожалению после комментариев. Подскажите что мне делать?

    1. Максим Зайцев (автор)

      Здравствуйте, Михаил. Сплошные коды в комментариях у меня запрещены, так что ваш код не прошёл. Предполагаю, что можно закрыть код после функции, вставить код похожих материалов и снова открыть рнр. Если не получится, пришлите мне на почту (maksim@1zaicev.ru) файл и я посмотрю.

  7. Наталья

    Здравствуйте! Подскажите, пожалуйста, куда вставлять код «похожие записи» для темы Castomizr? Страницы single.php в ней нет, если вставить в index.php, то последние записи появляются на главной, на странице рубрик и т.д.

    1. Максим Зайцев (автор)

      Здравствуйте, Наталья. В этой теме всё лучше делать через файл functions.php, так как она вся создана на API ключах. Напишите мне на почту, я поделюсь с вами кодом.

      1. Наталья

        Спасибо, Максим, за код! Я не справилась с его внедрением, для меня этот шаблон темы сложен. Пришлось временно ставить плагин. Надо набраться знаний.

        1. Максим Зайцев (автор)

          Ничего страшного, Наталья. Вы только начинаете познавать это дело. В скором времени всё получится. Удачи!

  8. Ришат

    Максим я вставил твой код в файл single.php,но она не там вставилась, удалил код,но со страницы этот запись не удаляется, почему?

    1. Максим Зайцев (автор)

      Здравствуйте, Ришат. Обновите кэш браузера и всё удалится, если вы удалили код в файле. А вообще, на будущее, когда работаете с кодом, делайте это в режиме инкогнито или периодически сбрасывайте кэш браузера.

  9. Наталья

    Максим, добрый день. А как сделать, чтобы данный список похожих статей без плагина корректно выводился на адаптиве?

    1. Максим Зайцев (автор)

      Здравствуйте, Наталья. Тут всё зависит от наследования родительских стилей. Но, в любом случае, можно присвоить блоку DIV класс или идентификатор и под них применить стили для мобильных устройств (медиазапросы). Статьи на эту тему есть на блоге.

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