Как сделать блок похожие записи на wordpress без плагинов
Отборная информация, которая вставляет!

Похожие записи без плагина

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

Вариантов у нас только 2 — или делать вывод на основе рубрик, или же на основе меток.

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

1. Вывод похожих записей при помощи меток

<h3>Похожие статьи:</h3>	
<div class="sample-posts">
<ul>	    
<?php
    //for use in the loop, list 5 post titles related to first tag on current post
    $tags = wp_get_post_tags($post->ID);
    if ($tags) {
    $first_tag = $tags[0]->term_id;
    $args=array(
    'tag__in' => array($first_tag),
    'post__not_in' => array($post->ID),
    'showposts'=>5,
    'caller_get_posts'=>1
    );
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
    <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>

    <?php
    endwhile;
    }
    wp_reset_query();
    }
    ?>
</ul>
</div>


Весь этот код нужно вставить в файл single.php (ну или куда вы там хотите его вставить).

‘showposts’=>5 — это кол-во выводимых статей. В сам код я уже вставил нужные классы для форматирования. Теперь вы, к примеру, можете вставить в файл стилей что-то вроде

.sample-posts ul li{
background-image:url("img/list-main.gif");
background-position:left center;
background-repeat:no-repeat;
list-style-type:none;
margin-bottom:5px;
padding-left:18px;
}

только сделайте какое-то изображение стрелочки list-main.gif

2. Вывод похожих записей при помощи рубрик

<div class="sample-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,
		'post__not_in' => array($post->ID),
		'showposts'=>5, // Number of related posts that will be shown.
		'caller_get_posts'=>1
	);
	// Rest is the same as the previous code
$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() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
		<?php 
		}
		echo '</ul>';
	}
	wp_reset_query();
}
?></div>

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

Мониторинг сети:

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


 

Похожие статьи:



67 комментариев к “Похожие записи без плагина”


9643e5d7

  1. :

    Отличная статья, спасибо, сделал себе по этому образцу немного модифицированный аппендикс «Похожие записи:»

  2. :

    Спасибо! вставила все работает, ниче менять не надо!

  3. :

    Как сделать, чтобы выводились случайные статьи той же рубрики, а не последние?

  4. :

    Спасибо. То что нужно :)

  5. Андрей:

    привет, подскажи как сделать вывод всех записей с определенной меткой?

    • ETNO:

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

  6. Сергей:

    А какой у вас стоит плагин (с выезжающей панелькой «Похожие записи»)?

    • ETNO:

      уже отвечал ранее, это не плагин, это своя функция и скрипт вшитый самостоятельно в тему сайта

      • Сергей:

        Поделиться можете?

        • ETNO:

          как? Этот скрипт писался именно под этот сайт, на другом его нужно подпиливать и это не готовое решение, что вставил и все. Его нужно вставлять в шаблон, а потом стилями доделывать под сайт

        • ETNO:

          если бы кто-то взялся сделать плагин, на основе этого решения, то я бы поделился наработками

  7. Елена:

    Хочу спросить, может вы мне подскажете почему у меня вместо » похожие статьи» вопросики, вопросики, а дальше все как положено, перечисление статей?

  8. :

    Добрый день. У меня код выводит из рубрики последние добавленные записи. Подскажите что изменить в коде, чтобы выводились не только последние записи, но и те, которые были добавлены уже давно??? Заранее спасибо.

  9. :

    Спасибо, все чудесно получилось, но есть пара вопросов.
    В ответе на один из предыдущих комментов ты пишешь

    ну это нужно смотреть каким кодом выводится, обычно хватает прописать в параметрах orderby=rand, но все от кода зависит которым вывод идет

    Можно объяснить этот момент подробнее, где именно надо писать эту строчку?
    И второй вопрос, в какую директорию надо заливать изображение list-main.gif?

  10. :

    Очень даже хороший способ.

  11. Елена:

    Добрый вечер. Подскажите пожалуйста, есть статья «Слоны» внутри этой статьи ссылка на другую статью » Африканские слоны». Так вот код не выводит картинку из статьи «Африканские слоны» хотя название выводит. Помогите пожалуйста как изменить код, чтобы картинку тоже показывал. Заранее спасибо!

    • ETNO:

      этот код и не должен выводить картинку, если вам нужен вывод с картинкой, то можно восспользоваться плагином contextual related post, который я описывал также на блоге.

  12. :

    А я намучался со своим похожими статьями. Сделал без плагин а и в результате комментарии стали отображаться к другим статьям блога. Пришлось искать другое решение.

    Сейчас поставил новый код посмотрю как будет работать!

  13. admin:

    Как вы заебали копипастить!

  14. :

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

  15. Дмитрий:

    Здравствуйте, если у меня много записей по меткам, и я хочу чтобы скажем 10 выводилось на одной странице 10 на второй и так далее, можно это как -то сделать. на страницах я использую плагин WP Page Numbers. вставляю эту строчку перед . Может и здесь можно ее как-то вставить чтобы разбивалось на страницы?

    • ETNO:

      попробуйте вместо showposts поставить posts_per_page

      • Дмитрий:

        спасибо, но к сожалению эффект тотже, сколько ставлю в «posts_per_page» или же в «showposts», столько и выводит. если же эти параметры убираю полностью, то выводит 15 записей сколько установленно выводить в «чтении» в админке, а остальные исчезают без появившейся пагинации. Код плагина вставляю после endwhile; как и на других страницах, но там срабатывает. Почитал пишут про $query_string и параметр paged, но как сделать не понимаю.

        • ETNO:

          попробуйте вначале вот так вставить

          $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;

          и в параметрах после posts_per_page добавить

          'paged' => $paged