Функция сортировки похожих статей по меткам (тегам)
Многие используют теги или метки, которые служат для связки статей, но при этом записи могут находиться в разных категориях. Вставляем этот код в файл 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/