Как сделать Похожие записи с миниатюрами в WordPress без плагинов

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

Примечание: Мы будем использовать встроенную в WordPress функцию для миниатюр записей. Поэтому способ ниже крайне рекомендуется к использованию.

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

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

     <?php $orig_post = $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),
    'posts_per_page'=>5, // Количество похожих записей для отображения.
    'caller_get_posts'=>1
    );
    $my_query = new wp_query( $args );
    if( $my_query->have_posts() ) {

    echo '<div id="relatedposts"><h3>Похожие записи</h3><ul>';

    while( $my_query->have_posts() ) {
    $my_query->the_post(); ?>

    <li><div class="relatedthumb"><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a></div>
    <div class="relatedcontent">
    <h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
    <?php the_time('M j, Y') ?>
    </div>
    </li>
    <? }
    echo '</ul></div>';
    }
    }
    $post = $orig_post;
    wp_reset_query(); ?>

Код выше смотрит на текущий ID записи и на все теги, проставленные ей, далее используется функция wp_query для поисках всех остальных записей, у которых есть хотя бы один из тегов текущей и выводит их. Настроить оформление вывода можно на свое усмотрение.

Преимущества: Большинство кодов на просторах интернета не могут быть использованы вне цикла основной записи. В виду того, что похожие записи расположены сразу под основной статьей и выше комментариев, этот код очень удобен. Мы сохраняем ID текущей записи, а затем снова вызываем ее в конце нашего кода похожих записей. Обычно, когда код написан не таким образом, два ID записей смешиваются и начинаются проблемы с выводом комментариев (путаются статьи и комменты к ним), с другими плагинами связанными с комментариями (их нумерация и прочими). Поэтому код выше — хороший и он работает.

Использование: Вставьте этот код в любое место вашего файла single.php и он заработает! Обычно его стоит размещать сразу над комментариями.

Похожие записи по категориям

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

    <?php $orig_post = $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),
    'posts_per_page'=> 2, // Количество похожих записей для отображения.
    'caller_get_posts'=>1
    );

    $my_query = new wp_query( $args );
    if( $my_query->have_posts() ) {
    echo '<div id="related_posts"><h3>Похожие записи</h3><ul>';
    while( $my_query->have_posts() ) {
    $my_query->the_post();?>

    <li><div class="relatedthumb"><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a></div>
    <div class="relatedcontent">
    <h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
    <?php the_time('M j, Y') ?>
    </div>
    </li>
    <?
    }
    echo '</ul></div>';
    }
    }
    $post = $orig_post;
    wp_reset_query(); ?>

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

Если вы работаете над новым проектом или над клиентским сайтом, то статья будем вам полезной.

Пример

relatedposts[1]

Дополнительные источники:

Query Function and Template Tags for WordPress

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
  • Алексей

    Круто!!! Поставил себе на сайт спасибки!!!!

    • http://web-devise.com/ ADv

      Всегда пожалуйста

  • Марина

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

  • Кирилл Назаров

    А как сделать чтобы похожие записи показывались в странице вложения???
    Например сайт.ру/какая-то-запись РАБОТАЕТ
    а на здесь сайт.ру/какая-то-запись/продолжение НЕ РАБОТАЕТ

    • ADv

      Что понимать под «Продолжением»? Если это плагин, разбивающий статьи на несколько частей, тогда нужно править код плагина.

Scroll To Top