Отборная информация, которая вставляет!

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

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

Вариантов у нас только 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 комментариев к “Похожие записи без плагина”

  1. Супер материал! Поставли на сайт. Теперь приходиться корректно вести тэги.

  2. благодарю, я обычно пользовался симпле тагс, но уже в версии 2, 9он не работал и приходилось оставаться на 2.7
    Ваша статья расширяет мои возможности и сознание )

  3. Отдельное спасибо, хоть и новичок я в блогосфере, но с вашей помощью узнаю всё больше и больше!

  4. Спасибо, давно хотел сделать, а тут смотрю, забыл, вот сейчас -1 плагин, что приятно.

    Хотя я вообще не менял в стилях ничего только размер увеличил текста.

  5. Спасибо за код) Но он работает не так как хотелось бы( Точнее не совсем так) По крайней мере второй… первый не проверял…

    В общем он не исключает данную статью (в которой выводятся) из списка похожих записей… что изменить чтобы это исправить?)

    P.S. Ошибочка в начале статьи: «теперь настал череД дать вам код» 🙂

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

  7. Рано обрадовался я что то :-). Глюки у меня чуток.
    Админ подскажи пожалуйста, почему может выводится в похожих записях ссылка на ту же самую запись, которая открыта??? Не пойму что за глюк такой.
    Вывод похожих записей делаю через рубрики.
    Спасибо.

    • ETNO:

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

      • пробовал еще один вариант, кстати, тоже самое, вернее там вообще глюки полным ходом были, в похожих статьях 5 ссылок на открытую статью :-). Отбор шел тоже по рубрикам. По тегам правда не пробовал. Просто не приходится использовать одинаковые теги…
        Во делема. Интересно конечно.
        Ну, вам во всяком случае спасибо.
        Будем думать.

  8. Кстати, почитал комменты, у Ripper та же проблема, что и у меня.

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

  10. ETNO, скажи пожалуйста, а как сделать такой вывод кода в материале?
    Спасибо.

  11. Спасибо, взял на вооружение. Без плагинов то оно лучше 🙂 Вопрос только, как сделать чтоб не только заголовок выводился, а еще и пару строчек из статьи?

  12. Виталик:

    Прекрасно работает, но не для сетевой версии WPMU. Статьи ищутся только в конкретном блоге. Скажите, пожалуйста, можно ли сделать так чтоб искались похожие статьи во всех блогах.

  13. Спасибо за код. Подскажи, можно как-то сделать чтобы код анализировал тайтл постов, или это уже плагин надо ставить?

    И еще, можно чтоб выводился кусок текста из поста?

    • ETNO:

      по тайтлу только с помощью плагина. кусок текста можно сделать — нужно вставить к примеру функцию http://fleek.org/fleekaj/WBVNEgxMS1sJXAFBTxVWQ11FFlcSRhsKRlBLI0FSUBRAFQ==/ или же поставить плагин limit_post и с помощью него выводить лимитированное кол-во символов. Но сразу скажу, что с этим часто проблемы бывают, потому что обрезается не всегда как хотелось. Посмотрите у меня на блоге через поиск, я описывал хороший плагин для похожих записей

  14. Nick:

    А как сделать чтоб с картинками выводилось?

  15. Подскажи, а как реализовать эту же задачу, но с условием что поиск не по рубрикам и тегам, а по произвольным полям?
    Спасиба заранее.

  16. Роман:

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

  17. А как без тегов и без категорий вывести похожие посты , по какому признаку ?
    у меня вот есть сайт на wp там порядка 13000 записей теги замучаешься прописывать, и категория всего одна, но есть разделение в виде поалфавитного вывода и у каждого поста есть свои post_meta но в них нет не обного поля которое бы можно было использовать как UID

    ps: сайт-катологизатор

    • ETNO:

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

  18. Liza:

    Спасибо большое. Ранее пользовалась плагином SimpleTags. Но после обновления версии WordPress до 3.1.2 перестали корректно выводиться статьи по рубрикам. Как выяснилось — дело в плагине. Последнее время стараюсь меньше плагинов использовать, а больше дописывать в коде. =)

  19. Мне нужно сделать так же, но еще и катинкой поста! Подскажите!

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

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

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

  23. Спасибо. То что нужно 🙂

  24. Андрей:

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

    • ETNO:

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

  25. Сергей:

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

    • ETNO:

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

      • Сергей:

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

        • ETNO:

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

        • ETNO:

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

  26. Елена:

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

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

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

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

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

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

  30. Елена:

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

    • ETNO:

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

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

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

  32. admin:

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

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

  34. Дмитрий:

    Здравствуйте, если у меня много записей по меткам, и я хочу чтобы скажем 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

оставить отзыв

Если хотите вставить код в комментарии, то оберните его тегами ‹pre›‹/pre›