«Связанные сообщения» является очень популярной функцией. По умолчанию в некоторых темах WordPress есть предустановленная функция в виде плагина, который реализовывает функционал показа «связанных сообщений». Есть достаточное количество плагинов, которые позволяют реализовать эту возможность:
- Yet Another Related Posts Plugin (YARPP)
- Similar Posts
- Aizattos Related Posts
- WordPress Related Posts
- Wasabi Related entries
WordPress поддерживает теги в своих новых версиях — так связанные сообщения могут быть реализованы без помощи каких-либо плагинов. Все, что нужно сделать, это найти другие сообщения с такими же тегами, как и текущее сообщение. Для этого необходимо просто отрыть файл single.php в текущей теме WordPress и добавить кусок кода, где будет отображаться блок с связанными сообщениями:
<?php $tags = wp_get_post_tags($post->ID); if ($tags) { $tag_ids = array(); foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id; $args=array( 'tag__in' => $tag_ids, 'post__not_in' => array($post->ID), 'showposts'=>5, // Number of related posts that will be shown. 'caller_get_posts'=>1 ); $my_query = new wp_query($args); if( $my_query->have_posts() ) { echo '<h3>Related Posts</h3><ul>'; 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 } echo '</ul>'; } } ?>
Этот код находит другие сообщения с любым из тегов, которые содержатся в текущей записи. Если есть необходимость показать сообщения с одной и той же категории, куда входит данное сообщение, тогда необходимо использовать следующий код:
<?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, // Количество отображаемых связанных сообщений 'caller_get_posts'=>1 ); // Дальше из предыдущего кода
И как бонус, кусок стиля css, который необходимо добавить в файл style.css
.post .related_post ul { font-family: Verdana, Serif; margin: 6px 5px 3px 10px; padding: 5px 5px 10px 0px; border-top: 1px dotted #9c9c9c; padding-left: 5px; /* Расстояние между линией и текстом */ margin-left: 5px; /* Расстояние от левого края до линии */ } .post .related_post li { font-family: Verdana, Serif; padding: 2px 2px 2px 5px; list-style-type: circle; list-style-position: inside; }
Подключить стиль можно стандартным его включением между
<div class="related_post"> код </div>
Отличный совет. Еще бы наглядный пример «до и после». И непонятно — он будет показывать случайные посты? Придется пользоваться плагинами :-(