Похожие записи с картинками можно достаточно легко создавать с помощью специальных плагинов, а что если провернуть это дельце без их помощи?
Задумывались ли вы когда-нибудь об этом? Ведь все мы знаем, что чрезмерное количество плагинов неизбежно приводит к замедлению нашего сайта. Именно поэтому я хочу поделиться с вами двумя способами, как можно создавать wordpress похожие записи с картинками без использования плагинов.
Примечание: для вывода похожих записей я буду использовать встроенную вордпрессовскую функцию, которая делает из изображения миниатюру. Я вам настоятельно рекомендую ею пользоваться, т.к. это лучшее решение, которое только может быть.
Содержание
WordPress обладает множеством удобных функций, в том числе таксономиями. Нас в данном случае больше всего интересует таксономия «Теги к записям» («PostTags»), которая позволяет помечать посты множеством ключевых слов. Кроме того, данный способ найдет другие посты, содержащие любой из тегов, который присутствует и у текущей заметки и выведет в виде списка похожие посты.
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 |
<?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, // Number of related posts that will be shown. 'caller_get_posts'=>1 ); $my_query = new wp_query( $args ); if( $my_query->have_posts() ) { echo '<div id="relatedposts"><h3>Related Posts</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 и все! Он заработает! Впрочем, обычно данный код размещают над комментариями.
Данный способ отыскивает записи в пределах конкретной категории, к которой относится текущая запись и 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 29 30 |
<?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, // Number of related posts that will be shown. 'caller_get_posts'=>1 ); $my_query = new wp_query( $args ); if( $my_query->have_posts() ) { echo '<div id="related_posts"><h3>Related Posts</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(); ?> |
Здесь также используются все те же функции, что и в выше представленном способе, просто мы применяем другой критерий.
Если вы работаете над каким-нибудь новым проектом или создаете клиентский сайт, то выше описанные способы будут очень вам полезны!