Один из вариантов как можно вывести в WordPress похожие записи без плагина. Вывод похожих записей осуществляется по меткам.
Похожие записи, как правило, выводятся в окончании поста и предназначены не только для удобства посетителя, но и для перелинковки сайта.
Как я упомянул выше, похожие записи будут выводиться по меткам. По мне так выводить в WordPress похожие записи по меткам очень удобно. Я назначаю к похожим по тематике публикациям одну общую метку. При этом сами публикации могут находиться в совершенно разных рубриках.
Еще один плюс данного кода, это то, что вывести в WordPress похожие записи можно будет используя шорткод, то есть имеется возможность выбора, выводить их или нет в какой-то определенной статье.
Этот код не использует скриптов, по сути это стандартные функции WordPress.
Итак, чтобы вывести в WordPress похожие записи без плагина нужно создать шорткод, в вашем случае просто скопировать и вставить в файл functions.php
этот небольшой код:
/* схожие записи шорткод */ /* ------------------------------------- */ function related_posts_shortcode( $atts ) { extract(shortcode_atts(array( 'limit' => '5', ), $atts)); global $wpdb, $post, $table_prefix; if ($post->ID) { $retval = '<ul>'; // Get tags $tags = wp_get_post_tags($post->ID); $tagsarray = array(); foreach ($tags as $tag) { $tagsarray[] = $tag->term_id; } $tagslist = implode(',', $tagsarray); // Do the query $q = "SELECT p.*, count(tr.object_id) as count FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt < NOW() GROUP BY tr.object_id ORDER BY count DESC, p.post_date_gmt DESC LIMIT $limit;"; $related = $wpdb->get_results($q); if ( $related ) { foreach($related as $r) { $retval .= '<li><a title="'.wptexturize($r->post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li>'; } } else { $retval .= ' <li>No related posts found</li>'; } $retval .= '</ul>'; return $retval; } return; } add_shortcode('related_posts', 'related_posts_shortcode');
Здесь следует обратить внимание на 'limit' => '5',
— это значит, что будет осуществлен вывод 5-ти похожих записей. Меняйте цифру '5'
на нужную.
Все, теперь, если вы добавите в окончание поста шорткод
должен отобразиться обычный список схожих записей. Естественно, к публикации нужно не забывать ставить метку, выбрать из часто используемых меток. Если добавить к записи новую метку, и шорткод «WordPress похожие записи», то конечно-же подобных записей не будет, пока не будет определена эта-же метка к другой записи. Шорткод сформирован, теперь стили оформления. Я дам свои стили, чтобы не выдумывать. Вот мой код CSS вывода похожих записей, который нужно добавить в файл style.css
:
.rel_psts /* весь блок */ { background: url("/wordpress-poxozhie-zapisi-bez-plagina/images/jeans_white.png") repeat scroll 0 0 rgba(0, 0, 0, 0); border: 2px solid #ffffff; padding: 15px 0 0 30px; box-shadow: 0px 2px 9px -2px #000000; font-weight: bold; margin-bottom: 30px; margin-top: 30px; } .rel_psts ul li{ list-style: none; }
background: url("/wordpress-poxozhie-zapisi-bez-plagina/images/jeans_white.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
— ставьте свою картинку в качестве фона.
Правда у вас не отразиться такой элемент оформления перед каждой похожей записью. Это используются иконки Font Awesome, о которых можно прочитать здесь.
Что-бы шорткод отображался ,со своими, назначенными стилями, в окончание записи в итоге нужно добавлять такой код:
<div class="rel_psts">Схожие по тематике записи : код шорткода</div>
Схожие записи выводятся, но их неудобно ставить к каждой публикации вручную? Что-бы вывод похожих записей производился автоматически в каждой публикации, нужно открыть файл single.php
и после строки
<?php the_content(); ?>
один раз поставить
<?php echo do_shortcode('<div class="rel_psts">Схожие по тематике записи : код шорткода </div>'); ?>
Если в файле single.php
такой строчки нет, то стоит поискать ее в файле типа loop-single.php
Немного подробнее о том, как вставить шорткод в любое место шаблона написано в статье «Добавляем шорткод в любое место шаблона WordPress»
— На этом все, если возникнут затруднения с выводом пожожих записей по меткам, пишите.