Похожие записи можно с легкостью реализовать с помощью плагинов, но задумывались ли вы как это реализовать без оных? В этой статье мы поделимся двумя различными способами, с помощью которых вы сможете вывести Похожие записи с миниатюрами в WordPress без плагинов.
Примечание: Мы будем использовать встроенную в WordPress функцию для миниатюр записей. Поэтому способ ниже крайне рекомендуется к использованию.
Похожие записи по тегам
В WordPress есть замечательная таксономия, известная как «Теги к записям», которую вы можете использовать на своем блоге. Вы можете проставлять теги к каждой записи, используя множество ключевых слов. Этот алгоритм найдет другие записи с любым из тегов, присутствующих у текущей записи и выведет их.
<?php $orig_post = $post; global $post; $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), 'posts_per_page'=>5, // Количество похожих записей для отображения. 'caller_get_posts'=>1 ); $my_query = new wp_query( $args ); if( $my_query->have_posts() ) { echo '<div id="relatedposts"><h3>Похожие записи</h3><ul>'; while( $my_query->have_posts() ) { $my_query->the_post(); ?> <li><div class="relatedthumb"><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a></div> <div class="relatedcontent"> <h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3> <?php the_time('M j, Y') ?> </div> </li> <? } echo '</ul></div>'; } } $post = $orig_post; wp_reset_query(); ?>
Код выше смотрит на текущий ID записи и на все теги, проставленные ей, далее используется функция wp_query для поисках всех остальных записей, у которых есть хотя бы один из тегов текущей и выводит их. Настроить оформление вывода можно на свое усмотрение.
Преимущества: Большинство кодов на просторах интернета не могут быть использованы вне цикла основной записи. В виду того, что похожие записи расположены сразу под основной статьей и выше комментариев, этот код очень удобен. Мы сохраняем ID текущей записи, а затем снова вызываем ее в конце нашего кода похожих записей. Обычно, когда код написан не таким образом, два ID записей смешиваются и начинаются проблемы с выводом комментариев (путаются статьи и комменты к ним), с другими плагинами связанными с комментариями (их нумерация и прочими). Поэтому код выше — хороший и он работает.
Использование: Вставьте этот код в любое место вашего файла single.php и он заработает! Обычно его стоит размещать сразу над комментариями.
Похожие записи по категориям
Этот алгоритм находит другие записи из той же категории, что и текущая запись и выводит их списком в виде похожих записей. Преимущество этой техники то, что у вас никогда не останется пустого пространства в разделе похожих записей.
<?php $orig_post = $post; global $post; $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), 'posts_per_page'=> 2, // Количество похожих записей для отображения. 'caller_get_posts'=>1 ); $my_query = new wp_query( $args ); if( $my_query->have_posts() ) { echo '<div id="related_posts"><h3>Похожие записи</h3><ul>'; while( $my_query->have_posts() ) { $my_query->the_post();?> <li><div class="relatedthumb"><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a></div> <div class="relatedcontent"> <h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3> <?php the_time('M j, Y') ?> </div> </li> <? } echo '</ul></div>'; } } $post = $orig_post; wp_reset_query(); ?>
Способ использует те же функции, что и код в начале статьи, разница только в том, что мы используем другой критерий для фильтрации.
Если вы работаете над новым проектом или над клиентским сайтом, то статья будем вам полезной.
Пример
Дополнительные источники: