Как вывести похожие посты в wordpress

5

Автор verond | Рубрики Настройки вордпресс, Плагины вордпресс | 29-04-2014


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

Блок с похожими статьями обычно добавляется после статьи
— <?php the_content(); ?> или перед комментариями.

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

Так, например, в одном случае вам нужно добавить код только в файл single.php, в другом еще и в style.css, в третьем понадобится файл functions.php. Все эти файлы находятся в папке темы — wp-content/themes/ваша_тема/.

 

Плагины вордпресс

 

Для вывода записей списком есть хороший плагин WordPress Related Posts.

Также генерирует список соответствующих записей с эскизами и статистику кликов.

 

Плагин WordPress Related Posts

Скачать WordPress Related Posts http://wordpress.org/plugins/wordpress-23-related-posts-plugin/

 

Для вывода с картинками плагин Related Posts Thumbs.

Скачать http://wordpress.org/plugins/related-posts-thumbnails/screenshots/

 

Я часто слышу, что лучше не пользоваться плагинами и вставлять коды вручную в файлы. Основной причиной называют нагрузку на блог. Здесь хочу заметить, выбирайте правильного хостера и не будет проблем. Да и с каких пор, выполнение вставленного вручную скрипта не влияет на нагрузку?

Я сторонница плагинов по той причине, что когда-нибудь захочу изменить или обновить свою сегодняшнюю тему и все настройки слетят. Не говоря о том, что напрочь забуду, что и куда я дописывала. А представьте человека, которому сделали блог, потому что он ничего в этом не понимает. Одно дело нажимать на ссылки обновления движка и плагинов, другое дело искать изменения в коде.

Впрочем, это ИМХО.

 

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

 

1 способ – похожие новости без плагинов — single.php и functions.php

 

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

 

В файл wp-content/themes/тема/functions.php нужно вставить эту функцию:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function digatalart_tag_rel_post(){
    global $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),
            'showposts'=>7, // Количество выводимых похожих записей.
            'caller_get_posts'=>1
        );
        $my_query = new wp_query($args);
        if($my_query->have_posts()){
            echo '<ul id="relPost">';
            while($my_query->have_posts()){
                $my_query->the_post();
            ?>
                <li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
            <?php
            }
            echo '</ul>';
        }
        else{
            echo '<p>Другие записи по теме отсутсвуют.</p>';
        }
        wp_reset_postdata();
    }
}

 

Для вызова функции похожих постов по тегам вставим в single.php после статьи:

1
2
3
<?php
    digatalart_tag_rel_post();
?>

 

В файл single.php можно вставить таким образом:

1
2
3
4
5
<p><h2>Похожие записи</h2> </p>   
    <?php
    digatalart_tag_rel_post();
?>
<br />

 

Как вывести похожие записи в вордпресс с сортировкой по рубрике

 

В файл wp-content/themes/тема/functions.php нужно вставить эту функцию:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function digatalart_cat_rel_post(){
    global $post;
    $categories = get_the_category($post->ID);
    if($categories){
        $category_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),
            'showposts'=> 5, // Количество выводимых похожих записей.
            'caller_get_posts' => 1
        );
        $my_query = new wp_query($args);
        if($my_query->have_posts()){
            echo '<ul id="relPost">';
            while($my_query->have_posts()){
                $my_query->the_post();
            ?>
                <li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
            <?php
            }
            echo '</ul>';
        }
        else{
            echo '<p>Другие записи по теме отсутсвуют.</p>';
        }
        wp_reset_postdata();
    }
}

 

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

 

 

Для вызова функции похожих постов по рубрике добавим в файл single.php этот код:

1
2
3
4
<?php
    //Вызов функции похожих записей в WordPress без плагинов (по рубрике)
    digatalart_cat_rel_post();
?>

 

2 способ вывода похожих записей без плагинов — single.php и style.css

 

Изменения вносим в файл вашей темы single.php, вставляем этот код после записи или перед комментариями:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
 $categories = get_the_category($post->ID);
 if ($categories) {
 $category_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),
 'showposts'=>5, // количество выводимых записей.
 'caller_get_posts'=>1);
 $my_query = new wp_query($args);
 if( $my_query->have_posts() ) {
 echo '<ul>';
 while ($my_query->have_posts()) {
 $my_query->the_post();
 ?>
 <li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
 <?php
 }
 echo '</ul>';
 }
 wp_reset_query();
 }
 ?>

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

 

Выводим похожие записи с картинками без плагинов

 

Чтобы рядом со списком ссылок на другие статьи показывались картинки, нужно в файл single.php вставить такой код:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<div class="related_posts">
 <h3>Похожие записи:</h3>
 <?php
 $categories = get_the_category($post->ID);
 if ($categories) {
 $category_ids = array();
 foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
 $args=array(
 'category__in' => $category_ids, //Если нужен вывод по тегам, то замените на 'tag__in' => $tag_ids,
 'post__not_in' => array($post->ID),
 'showposts'=>4, // количество отображаемых постов
 'orderby'=>rand, // вывод похожих записей в случайном порядке. Если удалить ее, то будут показываться последние статьи из категории.  
'caller_get_posts'=>1);
 $my_query = new wp_query($args);
 if( $my_query->have_posts() ) {
 echo '<div>';
 while ($my_query->have_posts()) {
 $my_query->the_post();
 ?>
 <div class="related_posts_box"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?><?php the_title(); ?></a></div>
 <?php
 }
 echo '</div>';
 }
 wp_reset_query();
 }
 ?>
 </div>

 

Может стоять задача – генерировать вывод записей из конкретно заданных категорий.

 

При таком подходе будет передаваться вес целенаправленно на нужные вам статьи. Для выполнения нужно добавить этот код в файл single.php:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div class="related_posts">
 <h3>Похожие записи:</h3>
 <?php
 $args=array(
 'category__in'=>array(3,7), // здесь через запятую указаны ID категорий, из которых будете выводить записи.
'post__not_in'=>array($post->ID),
 'showposts'=>4,
 'orderby'=>rand,
 'caller_get_posts'=>1);
 $posts = get_posts($args);
 foreach($posts as $post){
 setup_postdata($post);
 ?>
 <div class="related_posts_box"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?><?php the_title(); ?></a></div>
 <?php } wp_reset_postdata(); ?>
 </div>

 
Здесь мы использовали класс дива:

Добавляйте пост в свои любимые социальные сети, и Вы сможете вернуться к этой записи в любое время.


Комментарии 5 комментариев

Здравствуй, случайно не знаешь как сделать вывод постов с картинками, но чтоб не задействовать миниатюры, поскольку я их не использовал…

Обычно для вывода постов, списков и т.п. требуется генерация миниатюр. По-другому, я даже не в курсе.

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

Да уж..спасибо..только на Вашем сайте нашел как из нужной рубрики выводить записи, то есть ‘category__in’=>array(3,7),

По тегам не работает. Видимо код устарел, а версия WordPress обновилась.

Написать комментарий