Похожие записи с картинками можно достаточно легко создавать с помощью специальных плагинов, а что если провернуть это дельце без их помощи?
Задумывались ли вы когда-нибудь об этом? Ведь все мы знаем, что чрезмерное количество плагинов неизбежно приводит к замедлению нашего сайта. Именно поэтому я хочу поделиться с вами двумя способами, как можно создавать 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(); ?>
|
Здесь также используются все те же функции, что и в выше представленном способе, просто мы применяем другой критерий.
Если вы работаете над каким-нибудь новым проектом или создаете клиентский сайт, то выше описанные способы будут очень вам полезны!
Я подготовил для Вас обращение, с ним можете ознакомиться тут
Макс Метелев - автор, блоггер, актер местного театра, ведущий городских мероприятий. Делюсь только лучшим!