Як показати схожі публікації у WordPress

Ви, безперечно, бачили, як під різними публікаціями на сайтах висвічуються посилання на схожі публікації. Чи варто говорити про користь цієї функції для Вашого блогу? Краще з’ясуємо, як організувати показ схожих публікацій з допомогою і без допомоги додаткових плагінів.

Показ схожих публікацій це не просто забаганка чи зручна функція показати якомога більше інформації на своєму блозі. Якщо Ви слідкуєте за статистикою свого сайту та знайомі з таким поняттям, як показник відмов, то розумієте, про що йде мова. Як швидко потенційний користувач покине Ваш сайт? Чи зробили Ви все необхідне, щоб зацікавити його і примусити залишитись на ньому більше часу? Чи захочеться йому почитати інші статті на Вашому сайті і чи легко він може познайомитись з ними перш ніж перейти? Відповісти на ці питання в значній мірі може показ схожих публікацій.

Налаштувати показ схожих публікацій можна двома способами – внісши зміни у вигляді потрібного коду в деякі файли або використати один з багатьох плагінів створених саме для цього. Розглянемо кожен з цих способів окремо.

Як налаштувати показ схожих публікацій без плагіну у Вордпресі

Для цього потрібно внести спеціальний код в файл single.php в те місце, де Ви хочете, щоб виводились схожі публікації, зазвичай після значення

<?php the_content(); ?>

Або після функції виводу записів:

<?php
							while ( have_posts() ) :
								the_post();
								get_template_part( 'template-parts/content', get_post_type() );

								$ignites_prev_post = get_adjacent_post(false, '', true);
                                $ignites_next_post = get_adjacent_post(false, '', false);
                                ?>

При цьому якщо ви бажаєте вивести схожі публікації з мініатюрами по тегам використатйте такий код:

<div class="relatedposts">
<h3>Схожі публікації</h3>
<?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'=>4, //Кількість показу схожих публікацій.
 'caller_get_posts'=>1
 );
 $my_query = new wp_query( $args );
while( $my_query->have_posts() ) {
$my_query->the_post();
 ?>
 <div class="relatedthumb">
 <a rel="external" href="<? the_permalink()?>"><?php the_post_thumbnail(array(150,100)); ?><br />
 <?php the_title(); ?>
</a>
</div>
<? }
 }
 $post = $orig_post;
 wp_reset_query();
 ?>
</div>

Ви можете змінити кількість виводу публікацій змінивши значення ‘posts_per_page’=>4. Значення the_post_thumbnail(array(150,100) визначає розмір мініатюри, яка буде відображатися. В цьому випадку 150 пікселів в ширину і 100 в висоту.

Після цього потрібно додати код в файл стилів, щоб налаштувати показ схожих публікацій. Для цього додамо такий код в style.css:

.relatedposts {width: 640px; margin: 0 0 20px 0; float: left; font-size: 12px;}
.relatedposts h3 {font-size: 20px; margin: 0 0 5px 0; }
.relatedthumb {margin: 0 1px 0 1px; float: left; }
.relatedthumb img {margin: 0 0 3px 0; padding: 0;}
.relatedthumb a {color :#333; text-decoration: none; display:block; padding: 4px; width: 150px;}
.relatedthumb a:hover {background-color: #ddd; color: #000;}

Цей код підійде, якщо ви плануєте показувати 4 схожі публікації, як ми зазначили вище. В іншому випадку вам потрібно підлаштовувати значення .relatedthumb width під свої параметри.

Ви можете також налаштувати показ схожих публікацій по певній категорії. Скористайтесь таким кодом:

<div class="recents">
<p><strong>Публікації по темі:</strong></p>
 <!--схожі статті-->
<?php 
function show_previous_posts_from_category ($the_post_id, $the_category_id = 0, $post_num) {

$num = 0;
global $wpdb;

$sql = "SELECT wposts.*
FROM $wpdb->posts wposts
LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)h
LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->term_taxonomy.term_id = '$the_category_id'
AND wposts.post_status = 'publish'
AND wposts.post_type = 'post'
AND wposts.ID < '$the_post_id'
ORDER BY wposts.ID DESC
LIMIT $post_num";

$result = $wpdb->get_results($sql, OBJECT);
global $post;
?>
<ul>
<?php
foreach ($result as $post) {
setup_postdata($post);
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
<?php
$num++;
$save_ids[] = $post->ID;
}
if ( $num < $post_num || !$result ) {
$need_more = $post_num-$num;
$save_ids[] = $the_post_id;
$save_ids = join (',', $save_ids);
$more_posts = get_posts("numberposts=$need_more&amp;category=$the_category_id&amp;exclude=$save_ids");
foreach ($more_posts as $post){
setup_postdata($post);
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
<?php
}
}
?>
</ul>
<?php } ?>
<?php
$the_cat = get_the_category();
$the_cat_id = $the_cat[0]->cat_ID;
show_previous_posts_from_category($post->ID, $the_cat_id, 5); // кількість статей для показу (5).
wp_reset_query();
?>
<!--кінець схожих публікацій-->

Author:

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *