Как вывести похожие статьи без плагинов с миниатюрой

Как в WordPress вывести последние записи с миниатюрами

Как в WordPress вывести последние записи с миниатюрами

Здравствуйте, уважаемые читатели блога Iglous.ru. Сегодняшний пост будет посвящен тема, как вывести последние записи с миниатюрами.
Хочется рассказать, как можно сделать блок с предыдущими статьями из одной рубрики.

Данный способ является еще одним видом перелинковки сайта.
Представьте, что если бы у вас на сайте размещалось множество статей, то достаточно было бы только перелинковки, чтобы вывести сайт в топ по нч запросам и даже вч. Ярким примером является Википедия, хотя и дело не обошлось только перелинковкой, но ее значение того, что статьи находятся в ТОП очень велико.

Итак, сегодня мы поговорим:

›› Как вывести похожие статьи с миниатюрой из одной рубрики

›› Как вывести похожие статьи с миниатюрой блоками

››Как вывести похожие статьи без миниатюры

››Как вывести ссылки на предыдущую и следующую статью

Вывод похожих статей без плагинов

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

Как вывести предыдущие статьи с миниатюрами из одной рубрики

Разбиваю данный обзор функций для вывода похожих постов с картинкой и в одной категории следующим образом:

›› Обзор

›› Код

›› Установка кода

Первая функция позволяет выводить определенное количество статей из одной рубрики. Ее использование хорошо отражено в примере:

Вывод предыдущих статей в WordPress

Вывод предыдущих статей вместе с миниатюрой осуществляется только для одной рубрики.

=============================================
<?php function show_previous_posts_from_category ($the_post_id, $the_category_id = 0, $post_num) { function new_excerpt_length($length) { return 10; } add_filter('excerpt_length', 'new_excerpt_length');
$num = 0; global $wpdb;
$sql = "SELECT wposts.* FROM $wpdb->posts wposts LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id) 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; ?>
<div>
<ul> <h2>Предыдущие статьи из категории: <?php the_category( ', ' ) ?></h2> <?php foreach ($result as $post) {
setup_postdata($post); ?> <li> <?php the_post_thumbnail(array(40,40)); ?> <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li> <? the_excerpt();  ?>
<?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&category=$the_category_id&exclude=$save_ids"); foreach ($more_posts as $post){
setup_postdata($post); ?> <li> <?php the_post_thumbnail(array(40,40)); ?> <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>
<? the_excerpt(); ?>
</li> <?php } } ?> </ul> </div> <?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); wp_reset_query(); ?> =============================================

Разбор кода
return 10 — задает кол-во слов, которое будет выводиться в анонсе статьи.
($post->ID, $the_cat_id, 5) — цифра 5 означает вол-во предыдущих статей из одной категории.

Установка кода

Устанавливать код надо в тот файл, где нужно выводить похожие статьи. Обычно это файл single.php или index.php. (Обратитесь ко мне за помощью в разделе Помощь по WordPress услуги)

Если не нужно выводить слова в похожих постах, то удалите следующие строчки:

<? the_excerpt(); ?>   ( в двух местах)

А также в начале две строчки:

function new_excerpt_length($length) { return 10; }

Данный способ будет хорошо смотреться на статистических страницах, либо, которые редко обновляются. Для статей подойдет следующий способ.

Вывод похожих статей из одной рубрики блоками, в данной функции происходит вывод похожих статей блоками, получается красиво и удобно.

Вывести похожие статьи с миниатюрой

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

Установка кода

Сам код для вывода похожих статей надо установить туда, где необходимо их выводить, обычно это single.php, в моем случае comments.php

  1. <!—похожие статьи с миниатюрами—>
  2. <div id=»postpodobn»>
  3. <h3>Подобные посты</h3>
  4. <?php
  5. $categories = get_the_category($post->ID);
  6. if ($categories) {
  7. $category_ids = array();
  8. foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
  9. $args=array(
  10. ‘category__in’ => $category_ids,
  11. ‘post__not_in’ => array($post->ID),
  12. ‘showposts’=>8,
  13. ‘orderby’=>rand,
  14. ‘caller_get_posts’=>1);
  15. $my_query = new wp_query($args);
  16. if( $my_query->have_posts() ) {
  17. echo ‘<ul>’;
  18. while ($my_query->have_posts()) {
  19. $my_query->the_post();
  20. ?>
  21. <div align=»center»><a href=»<?php the_permalink() ?>» rel=»bookmark» title=»<?php the_title(); ?>»>
  22. <div id=»podobbox»>
  23. <?php the_post_thumbnail(); ?> <?php the_title(); ?></div></a></div>
  24. <?php
  25. }
  26. echo ‘</ul>’;
  27. }
  28. wp_reset_query();
  29. }
  30. ?>
  31. </div>
  32. <!—похожие статьи с миниатюрами—>

Далее необходимо стилизовать, сделав вывод похожих статей блоками. Открываем файл style.css:

  1. /*————Похожие записи с миниатюрой————*/
  2. #postpodobn{margin-left:25px; float: left;width: 100%; text-align: center;}
  3. #podobbox{
  4. min-height: 170px;
  5. decorate: none;
  6. border:1px solid #bbb;
  7. float: left;
  8. list-style: none;
  9. margin: 1px;
  10. padding: 5px;
  11. width: 150px;
  12. }
  13. #podobbox:hover{
  14. background:#e4fdd6;
  15. border: 1px dashed #ffffff;
  16. }
  17. /*————Похожие записи с миниатюрой————*/

Разбор кода

По поводу кода в файле single.php

‘showposts’=>8 — кол-во выводимых похожих записей
‘orderby’=>rand — отвечает за тип вывода, в данном случае случайным образом ( rand=random — случайно)

По поводу стилей

text-align: center; — выравнивание текста в блоках по середине
width: 150px; — значение ширины для всех миниатюр
min-height: 210px; — высота квадратика/блоков, советую задвать исходя из размеров миниатюр и длины заголовков, иначе будет смотреться очень некрасиво
border:1px solid #bbb; — значение толщины границы: толщина, стиль и цвет границы
background:#e4fdd6; — цвет блока при наведении на него
margin: 0px; padding: 0px; margin: 5px; — отступы

После установки кода рекомендую просмотреть работоспособность блоков, после чего подкорректируйте при необходимости.

Как вывести похожие статьи без миниатюры

Вывод последних статей без плагина снизит нагрузку на блог, поэтому рекомендую читать раздел Хаки. Раньше я писал, как вывести похожие статьи с помощью плагина Related Posts Thumbnails плагин вывода похожих статей с картинкой хорошо справлялся, но делал небольшую нагрузку на блог, что очень плохо сказывается, особенно, если у вас сотни страниц.

Если вы устанавливали плагин, то не забудьте его удалить, читайт как удалить плагины WordPress. А также советую оптимизировать WordPress.

Установка кода

Открываем файл single.php ( или тот, где выводим похожие посты) и ставим код:

  1. <!—вывод подобных статей—>
  2. <div>
  3. <h4>Обратите внимание на такие заметки:</h4>
  4. <?php
  5. $categories = get_the_category($post->ID);
  6. if ($categories) {
  7. $category_ids = array();
  8. foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
  9. $args=array(
  10. ‘category__in’ => $category_ids,
  11. ‘post__not_in’ => array($post->ID),
  12. ‘showposts’=>5,
  13. ‘orderby’=>rand,
  14. ‘caller_get_posts’=>1);
  15. $my_query = new wp_query($args);
  16. if( $my_query->have_posts() ) {
  17. echo ‘<ul>’;
  18. while ($my_query->have_posts()) {
  19. $my_query->the_post();
  20. ?>
  21. <li><a href=»<?php the_permalink() ?>» rel=»bookmark» title=»<?php the_title_attribute(); ?>»><?php the_title(); ?></a></li>
  22. <?php
  23. }
  24. echo ‘</ul>’;
  25. }
  26. wp_reset_query();
  27. }
  28. ?></div>
  29. <!—вывод подобных статей—>

Разбор кода

‘category__in’ => $category_ids — выбор статей происходит по рубрикам, как вариант можно выводить по меткам, т.е. ‘tag__in’ => $tag_ids
‘showposts’=>5 — выводятся 5 похожих постов

Как вывести ссылки на предыдущую и следующую статью

Вывод на предыдущий и следующие посты будет происходит с помощью функций previous_post_link и next_post_link.

Установка кода

Вывод предыдущей статье:

  1. <?php previous_post_link(‘%link’); ?>

Вывод следующей статьи:

  1. <?php next_post_link(‘%link’); ?>

Но, чтобы украсить ее я сделал так, чтобы выравнить каждую ссылку по краю ( чтобы не слипались в одну) и разместил каждую на свою строку:

<div style=»float: left»>  </div> — выравнивание по левой стороне

<div style=»float: right»> </div> — выравнивание по правой стороне

Плюс к этому между двумя этими кодами вставил <br></br> — чтобы перенести вторую ссылку на следующую строку.

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

 


Похожие записи:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Похожие записи: