Как вывести похожие записи без плагина?

Долгое время я не делал на этом сайте вывод похожих записей, и вот настал час. Вывести похожие записи в конце статьи очень полезно по двум причинам: 1. Так мы получаем дополнительную перелинковку, при этом тематическую. 2. Так мы увеличиваем глубину просмотра сайта, так как если прочтения человек прочитает хотя бы ещё одну статью, то для сайта это будет плюс.


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

Как вывести похожие записи без плагина?

Я перепробовал много кодов, и в конечном счете остановился на одном самом оптимальном. Это скрипт выводит тематические статьи, с картинкой,  легко настраивается.

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

<?php
function show_previous_posts_from_category ($the_post_id, $the_category_id = 0, $post_num) {
function new_excerpt_length($length) {
return 10; }
add_filter('excerpt_length', 'new_excerpt_length');

$num = 0;
global $wpdb;

$sql = "SELECT wposts.*
FROM $wpdb->posts wposts
LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->term_taxonomy.term_id = '$the_category_id'
AND wposts.post_status = 'publish'
AND wposts.post_type = 'post'
AND wposts.ID < '$the_post_id'
ORDER BY wposts.ID DESC
LIMIT $post_num";

$result = $wpdb->get_results($sql, OBJECT);
global $post;
?>

<div>

<!--noindex--><h2>Другие статьи из категории: <?php the_category( ', ' ) ?></h2> <!--/noindex-->

<?php
foreach ($result as $post) {

setup_postdata($post);
?>
<p>
<?php the_post_thumbnail(array(150,150)); ?>

<h3><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3></p>
<? the_excerpt(); ?>

<?php
$num++;
$save_ids[] = $post->ID;
}
if ( $num < $post_num || !$result ) {
$need_more = $post_num-$num;
$save_ids[] = $the_post_id;
$save_ids = join (',', $save_ids);
$more_posts = get_posts("numberposts=$need_more&category=$the_category_id&exclude=$save_ids");
foreach ($more_posts as $post){

setup_postdata($post);
?>
<p>

<h3><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h3>

<div align="center"><?php the_post_thumbnail(array(250,250)); ?></div>

<? the_excerpt(); ?>

</p>
<?php
}
}
?>

</div>
<?php } ?>
<?php
$the_cat = get_the_category();
$the_cat_id = $the_cat[0]->cat_ID;
show_previous_posts_from_category($post->ID, $the_cat_id, 5);
wp_reset_query();
?>

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

Может у вас есть лучшие варианты? Будет интересно узнать другие решения.

СОВЕТ ВЕБМАСТЕРУ: Умение зарабатывать в интернете - это только пол дела, вторая половина - это умение ВЫГОДНО обналичивать электронные деньги. Вот список офшорных банковских карт, на которые можно выводить средства и потом снимать с них хрустящие купюры:

1. Payoneer - Самая популярная в мире платежная система для фрилансеров. Выдает карты, находится в США.

2. EpayService - Американская платежная система, очень популярна во многих странах, бесплатно дает карту MasterCard в EVRO для жителей СНГ и Европы.

3. Skrill - Единственная платежная система которая работает с криптовалютами и при этом выпускает бесплатные банковские карты MasterCard.

4. Epayments - можно открыть счет в долларах, евро и рублях. Формально банка нет, юридический адрес в Лондоне, но можно получить реквизиты банка в Латвии.

5. AdvCash - Офшорный банк находится в Белизе, можно открыть счет в долларах, евро, фунтах и рублях.

6. Payeer - Штаб квартира этой платежной системы находится в Грузии, тут так же можно открыть счет в долларах, евро и рублях.

7. Capitalist - Можно создать счета в долларах, евро и рублях. Низкие тарифы на вывод. Компания зарегистрирована в юрисдикции Британских Виргинских Островов.

Регистрация доменов
Домен RU - 99 руб
Домен РФ - 99 руб
www.

Один комментарий уже есть ;)