Функция сортировки похожих статей по меткам (тегам)
Многие используют теги или метки, которые служат для связки статей, но при этом записи могут находиться в разных категориях. Вставляем этот код в файл single.php под статьей.
Совет! Шаблоны у всех разные, экспериментируйте и если не получится с первого раза вставить код в желаемое место, то просто пробуйте его вставить в другое. Но не забываем сохранять то что правим, чтоб потом, вдруг что, восстановить все на место.
01 |
<div class= "similar_records" > |
02 |
<h 3 >Похожие записи:</h 3 > |
03 |
<?php $tags = wp_get_post_tags( $post ->ID); |
06 |
foreach ( $tags as $individual_tag ) $tag_ids [] = $individual_tag ->term_id; |
08 |
'tag__in' => $tag_ids , // Сортировка производится по тегам |
09 |
'post__not_in' => array ( $post ->ID), |
10 |
'showposts' => 5 // Цифра означает количество выводимых записей |
12 |
$my_query = new wp_query( $args ); |
13 |
if ( $my_query ->have_posts() ) { |
15 |
while ( $my_query ->have_posts()) { |
16 |
$my_query ->the_post(); |
18 |
<li> <a href= "<?php the_permalink() ?>" rel= "bookmark" title= "<?php the_title_attribute(); ?>" > <?php the_title(); ?> </a> </li> |
Если в коде ничего не менять, то вывод похожих статей будет будет осуществятся по тегам, но с учетом даты, начиная с самих свежих. Чтобы статьи выводились в случайном порядке необходимо добавить строчку:
Прописываем после 9 строки:
Также не лишнем будет добавить еще 1 условие:
Оно запрещает повторение одной и той же ссылки. Например, у Вас на блоге еще небольшое количество статей, а вы в коде указали вывод по 10 ссылок:
В этом случаи, в блоке похожих записей могут появиться одинаковые ссылки. Надеюсь понятно.
В итоге у нас должен получится такой код:
01 |
<div class= "similar_records" > |
02 |
<h 3 >Похожие записи:</h 3 > |
03 |
<?php $tags = wp_get_post_tags( $post ->ID); |
06 |
foreach ( $tags as $individual_tag ) $tag_ids [] = $individual_tag ->term_id; |
08 |
'tag__in' => $tag_ids , // Сортировка происходит по тегам (меткам) |
09 |
'orderby' =>rand, // Добавляем условие сортировки рандом (случайный подбор) |
10 |
'caller_get_posts' => 1 , // Запрещаем повторение ссылок |
11 |
'post__not_in' => array ( $post ->ID), |
12 |
'showposts' => 5 // Цифра означает количество выводимых записей |
14 |
$my_query = new wp_query( $args ); |
15 |
if ( $my_query ->have_posts() ) { |
17 |
while ( $my_query ->have_posts()) { |
18 |
$my_query ->the_post(); |
20 |
<li> <a href= "<?php the_permalink() ?>" rel= "bookmark" title= "<?php the_title_attribute(); ?>" > <?php the_title(); ?> </a> </li> |
Теперь вывод похожих записей будет производится в случайном порядке.
Функция сортировки похожих статей по рубрикам (категориям)
Лично я использую второй способ вывода похожих записей, так как считаю, что сортировка по рубрикам наиболее подходит для текстовых заголовков, но в любом случаи выбор за Вами.
01 |
<div class= "similar_records" > |
02 |
<h 3 >Похожие записи:</h 3 > |
03 |
<?php $categories = get_the_category( $post ->ID); |
05 |
$category_ids = array (); |
06 |
foreach ( $categories as $individual_category ) $category_ids [] = $individual_category ->term_id; |
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() ) { |
16 |
while ( $my_query ->have_posts()) { |
17 |
$my_query ->the_post(); |
19 |
<li> <a href= "<?php the_permalink() ?>" rel= "bookmark" title= "<?php the_title_attribute(); ?>" > <?php the_title(); ?> </a> </li> |
Я сразу включил условие сортировки рандом, но если вы хотите установить сортировку по датам, то просто уберите строчку:
Напоминаю, что код надо вставить в файл single.php после статьи. Обычно его вставляют сразу после скриптов социальных кнопок, но если возникнут сложности, то пожалуйста задавайте вопросы в комментариях.
Источник: https://seo-mayak.com/