Для вывода в WordPress похожих записей (создания автоматической внутренней перелинковки) начинающие авторы блогов обычно используют плагины. Плюс данного способа – установить и настроить плагин просто.

Минус в том, что плагин выводит похожие записи как попало, выхватывает похожие слова из заголовков статей. То есть получается список постов, не всегда связанных по содержанию.

При выводе похожих записей Вордпресс без плагина, с помощью кода, посты сортируются либо по рубрикам, либо по меткам (более удобно). В этом случае надо очень продуманно проставлять метки, чтобы они были максимально релевантны содержанию.

Похожие записи по меткам

Исправления будем вносить в файл single.php (одна запись).

Выше строчки <?php comments_template (); ?>  вставляем код

<div class="sample-postsinca">
<ul>
<?php
//for use in the loop, list 5 post titles related to first tag on current post
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>5,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
endwhile;
}
wp_reset_query();
}
?>
</ul>
</div>

 

'showposts'=>5 это количество записей, которое вы выводите.

Чтобы похожие записи соответствовали стилю вашего блога, в файл style.css (вниз) вставьте код

.sample-postsinca ul li{
background-position:left center;
background-repeat:no-repeat;
list-style-type:none;
margin-bottom:10px;
padding-left:20px;
}

Ну, вот и получились (смотрите ниже) похожие записи без использования плагина.

Похожие записи с картинками

Еще интереснее, когда к каждой записи привязана привлекательная картинка (миниатюра). У посетителей появляется дополнительная мотивация перейти по ссылке из похожих записей на другие страницы.

Обычно приводят способ, который требует каждый раз загружать в библиотеку медиафайлов 2 картинки – в полном размере и миниатюру. Трудоемко, раздувается библиотека медиафайлов.

На блоге (http: // n-wp.ru/4490, http: // n-wp.ru/5570, http: // n-wp.ru/4488) я увидела способ, когда рядом со списком связанных записей выводятся пропорционально уменьшенные картинки из этого же поста и анонсы.

1 этап. Дополнительно изображения загружать не надо, нужно лишь в файл functions.php добавить следующий код.

function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];
  if(empty($first_img)) {
    $first_img = "http://ваш_сайт/files/default.jpg"; // Ссылка на заглушку
  }
  return $first_img;
}

 

  • в строке $first_img = "http://ваш_сайт//files/default.jpg"; // Ссылка на заглушку нужно указать адрес картинки на вашем сайте, которая будет выводиться при отсутствии похожих записей.

2 этап. В файл single.php перед <?php comments_template (); ?> вносим код

<table border="0" cellspacing="10"><tbody><tr>
<td valign="top" align="right" width="110"><div>Похожие записи</div></td>

    <?php
     $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),
         'showposts'=> 3, // Количество выводимых записей
         'caller_get_posts'=> 1
      );
     $rp_query = new wp_query($args);
     endif;
     if($rp_query):
      if($rp_query->have_posts()) ?>
        <?php while ($rp_query->have_posts()):  $rp_query->the_post(); ?>

         <td valign="top"><div style="padding-left:8px;">
           <a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>">
           <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
            <img align="left" style="-webkit-box-shadow:0 0 10px rgba(0, 0, 0, 0.4); -moz-box-shadow:0 0px 10px rgba(0, 0, 0, 0.4); margin: 2px 10px 2px 0px; display: inline" src="<?php echo catch_that_image() ?>" alt="<?php the_title(); ?>" width="250"/>
           </a>
           <a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
           <br /><?php the_content_rss('', TRUE, '', 24); ?>
         </div></td>

        <?php endwhile; ?>
     <?php else: ?>
       <td><?php _e("Похожих записей пока нет",""); ?></td>
     <?php endif; wp_reset_query(); ?>

</tr><tbody></table>

 

  • количество выводимых записей 'showposts'=> 3
  • максимальная ширина картинок " width="250", минимальная 110 мм
  • расстояние между ячейками (cellspacing="10") 10 мм (можно уменьшить если картинок больше и они более мелкие)
  • <?php echo catch_that_image() ?> - это функция вывода изображения из записи, которую мы вставили на 1 этапе в functions.php.
  • <?php the_title(); ?> - вывод названия записи
  • <?php the_content_rss('', TRUE, '', 24); ?> - анонс записи без форматирования. 24 - количество отображаемых слов.

Обратите внимание, все картинки должны иметь одинаковые размеры, иначе миниатюры получатся разномастными, что не слишком красиво.

похожие записи с картинками без плагина

Вот результаты, которые можно получить, если подбирать изображения более тщательно. Анонсы в данном случае не выведены.

похожие записи Вордпресс с картинками

Обязательно используйте похожие записи или другие способы  для создания автоматической внутренней перелинковки.