WordPress: Свързани публикации с умалени изображения без плъгини

5 юни 2014 | Без плъгини
WordPress: Свързани публикации с умалени изображения

Свързани публикации (Related posts) могат лесно да бъдат показани с плъгини. Но ако не сте любител на плъгините, също толкова лесно можете да си добавите такива свързани публикации с умалено изображение (Thumbnail) към тях и без да използвате разширения.

В тази статия ще видите как става това, като можете да изберете публикациите да бъдат свързани по категория или етикет, в зависимост от вашите конкретни нужди.

1. Свързани публикации по етикети (Related Posts by Tags)

Към всяка публикация във 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'=>3, // колко свързани публикации да се виждат
'caller_get_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
echo '<div id="relposts"><h3>Виж още</h3><ul>';
while( $my_query->have_posts() ) {
$my_query->the_post(); ?>
<li><div class="relimage"><?php the_post_thumbnail(); ?></div>
<div class="relcontent">
<h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php the_time('j F Y') ?> | <?php the_category(', '); ?>
</div>
</li>
<? }
echo '</ul></div>';
}
}
$post = $orig_post;
wp_reset_query(); ?>

Кодът търси в current post ID и всички тагове (етикети), асоциирани с него, и използва функцията wp_query(); за да намери всички постове, в които присъстват еднакви етикети, и ги визуализира. Поставете го във файла single.php на вашата WordPress тема, там където искате да ви се появят свързаните публикации, обичайно преди коментарите.

2. Свързани публикации по категории (Related Posts by Category)

Долният алгоритъм ще намери всички останали публикации в същата категория, към която е причислена и основната публикация, и ще ги визуализира.

<?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'=> 3, // броя свързани публикации
'caller_get_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
echo '<div id="relposts"><h3>Виж още</h3><ul>';
while( $my_query->have_posts() ) {
$my_query->the_post();?>
<li><div class="relimage"><?php echo get_first_image();?></div>
<div class="relcontent">
<h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php the_time('j F Y') ?>
</div>
</li>
<?
}
echo '</ul></div>';
}
}
$post = $orig_post;
wp_reset_query(); ?>

В горните два примера извикваме заглавията на публикациите, както датата им и картинките към тях (в първия и категорията). Ако във WordPress темата си използвате функцията the_post_thumbnail();, ще извикате нея (първия случай). Във втория код извикваме първите картинки от публикациите (ако имат повече от една). Как да си добавите функцията get_first_image(); за извикване на първата картинка, вече сме показвали.

Освен това, по ваше желание, можете да показвате и резюмето the_excerpt (); и/или категорията the_category(‘, ‘);.
Не забравяйте да добавите горепосочените стилове във вашия CSS, като можете да си стилизирате свързаните публикации изцяло по ваш вкус.