Доброго времени суток! Сегодня мы поговорим о такой полезной функции, как блок «похожие записи», который обычно выводится в конце каждого поста. Данный блок предлагает ознакомиться с другими материалами блога, тем самым удерживая посетителей. Плюс ко всему это является дополнительной перелинковкой постов, что положительно повлияет на поведенческие факторы.
Можно воспользоваться плагином для вывода похожих записей, например WP-related-posts, но делать это необязательно.
Похожие записи WordPress без плагинов
Для того, чтобы вывести блок похожие записи WordPress, нужно добавить php-код в файл темы single.php и прописать CSS-стили.
Для этого открываем файлы single.php и style.css в редакторе (желательно Notepad). Начнем с файла single.php
В файл темы single.php, под функцией вывода поста, там где располагается строчка
1 | <?php the_content(); ?> |
добавляем следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <div class="recents"> <p><strong>Записи по теме:</strong></p> <!--похожие статьи--> <?php function show_previous_posts_from_category ($the_post_id, $the_category_id = 0, $post_num) { $num = 0; global $wpdb; $sql = "SELECT wposts.* FROM $wpdb->posts wposts LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)h 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; ?> <ul> <?php foreach ($result as $post) { setup_postdata($post); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li> <?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); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li> <?php } } ?> </ul> <?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); // количество выводимых названий постов по теме (5). wp_reset_query(); ?> <!--конец похожих статей--> |
Для того, чтобы вывести не 5, а больше, или меньше названий записей по теме, нужно в строчке
bb66d7913a1c49a12e7b11295f1d35fa002
Прописать другую цифру (4, 6, 7 и т.д.)
Приведенный код выведет пять заголовков предыдущих записей по дате публикации из одной рубрики.
Если Вам нужно выводить похожие записи WordPress по меткам, используйте следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <div class="recents"> <p><strong>Записи по теме:</strong></p> <!--похожие статьи--> <ul> <?php $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="Постоянная ссылка <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> <?php endwhile; } wp_reset_query(); } ?> </ul> </div> <!--конец похожих статей--> |
Теперь переходим к файлу style.css для оформления внешнего вида блока похожие записи WordPress:
Для корректного отображения прописываем CSS-стили в файл style.css:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | .recents { // стили блока похожих записей width: 90%; // ширина блока; font-size: 0.7em; // размер шрифта; border: 2px solid #E4E4E4; // толщина и цвет рамки вокруг блока ссылок; background: #FCFCFC; // цвет фона; margin: 0px auto 1.625em 0px; // отступы ссылок; padding: 10px; // отступ списка ссылок от рамки; border-radius: 4px; // закругление углов рамки; -moz-border-radius: 4px; // закругление углов рамки для Mozilla. } .recents a, .recents a:visited{ // стили ссылок блока похожих записей (неактивных, при наведении курсора и посещенных) color: #464451; // цвет ссылок. } |
Блок похожие записи WordPress готов! На моем блоге похожие записи можно увидеть под каждым постом, в том числе и под этим.
Спасибо, поставила, все работает. Только такой вопрос: можно сделать так, чтобы статьи сортировались не по дате публикации, а выводились случайно?
Спасибо за интересный вопрос! Я думаю, что это возможно, как найду ответ, сообщу Вам!
Статья несомненно полезная, но мне нужна информация как вывести блок похожих записей самостоятельно определяя какие статьи выводить в блоке
Про такое не знаю, но Вы можете с помощью html и CSS самостоятельно вставлять блок похожих записей в конце каждого поста.
Хорошо, Никита, что Вы ещё учите вариантам решения некоторых вопросов на блоге без плагинов.
Пока у меня для выведения похожих записей стоит плагин, но я его обязательно заменю.
Даже можно вывести список похожих записей без плагина и с миниатюрами.
Спасибо большое, Никита, за ценные советы — я тут с Вами академиком стану (кислых щей…
).
Я уже это держу в планах на будущее, что от плагинов нужно будет потом по максимуму избавляться.
Подскажите как вывести список похожих записей без плагина и с миниатюрами?
Этим вопросом не занимался, но даю ссылку на статью как это можно сделать.
Спасибо большое, очень помогло.
Поставил себе, огромное спасибо