Как вывести похожие записи в WordPress без плагинов

Функция сортировки похожих статей по меткам (тегам)

Многие используют теги или метки, которые служат для связки статей, но при этом записи могут находиться в разных категориях. Вставляем этот код в файл single.php под статьей.

Совет! Шаблоны у всех разные, экспериментируйте и если не получится с первого раза вставить код в желаемое место, то просто пробуйте его вставить в другое. Но не забываем сохранять то что правим, чтоб потом, вдруг что, восстановить все на место.

01 <div class="similar_records">
02 <h3>Похожие записи:</h3>
03 <?php $tags = wp_get_post_tags($post->ID);
04 if ($tags) {
05  $tag_ids = array();
06  foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
07  $args=array(
08  'tag__in' => $tag_ids, // Сортировка производится по тегам
09  'post__not_in' => array($post->ID),
10  'showposts'=>5 // Цифра означает количество выводимых записей
11  );
12  $my_query = new wp_query($args);
13  if( $my_query->have_posts() ) {
14  echo '<ul>';
15         while ($my_query->have_posts()) {
16             $my_query->the_post();
17         ?>
18             <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
19         <?php
20         }
21         echo '</ul>';
22     }
23  wp_reset_query();
24  }
25  ?></div>

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

'orderby'=>rand,

Прописываем после 9 строки:

'tag__in' => $tag_ids,

Также не лишнем будет добавить еще 1 условие:

'caller_get_posts'=>1,

Оно запрещает повторение одной и той же ссылки. Например, у Вас на блоге еще небольшое количество статей, а вы в коде указали вывод по 10 ссылок:

'showposts'=>10,

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

В итоге у нас должен получится такой код:

01 <div class="similar_records">
02 <h3>Похожие записи:</h3>
03 <?php $tags = wp_get_post_tags($post->ID);
04 if ($tags) {
05  $tag_ids = array();
06  foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;
07  $args=array(
08  'tag__in' => $tag_ids, // Сортировка происходит по тегам (меткам)
09  'orderby'=>rand, // Добавляем условие сортировки рандом (случайный подбор)
10  'caller_get_posts'=>1, // Запрещаем повторение ссылок
11  'post__not_in' => array($post->ID),
12  'showposts'=>5 // Цифра означает количество выводимых записей
13  );
14  $my_query = new wp_query($args);
15  if( $my_query->have_posts() ) {
16  echo '<ul>';
17         while ($my_query->have_posts()) {
18             $my_query->the_post();
19         ?>
20             <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
21         <?php
22         }
23         echo '</ul>';
24     }
25  wp_reset_query();
26  }
27  ?></div>

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

Функция сортировки похожих статей по рубрикам (категориям)

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

01 <div class="similar_records">
02 <h3>Похожие записи:</h3>
03 <?php $categories = get_the_category($post->ID);
04 if ($categories) {
05  $category_ids = array();
06  foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
07  $args=array(
08  'category__in' => $category_ids, // Сортировка производится по категориям
09  'orderby'=>rand, // Условие сортировки рандом
10  'post__not_in' => array($post->ID),
11  'showposts'=>5, //Количество выводимых записей
12  'caller_get_posts'=>1); // Запрещаем повторение ссылок
13  $my_query = new wp_query($args);
14  if( $my_query->have_posts() ) {
15 echo '<ul>';
16         while ($my_query->have_posts()) {
17             $my_query->the_post();
18         ?>
19             <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
20         <?php
21         }
22         echo '</ul>';
23     }
24 wp_reset_query();
25 }
26 ?></div>

Я сразу включил условие сортировки рандом, но если вы хотите установить сортировку по датам, то просто уберите строчку:

'orderby'=>rand,

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

Источник: https://seo-mayak.com/

Рубрики: Новости

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