РАБОТАЮ ВО ВСЕХ ГОРОДАХ РОССИИ
ВРЕМЯ РАБОТЫ С 9:00 ДО 20:00
Как вывести похожие посты в wordpress
Ссылки на другие статьи, которые обычно располагаются внизу записи, строят логичную внутреннюю перелинковку на сайте и повышают поведенческие факторы. Читатель продолжает оставаться на вашем блоге и переходит вглубь на другие страницы.
Блок с похожими статьями обычно добавляется после статьи
— <?php the_content(); ?> или перед комментариями.
Реализовать вывод других постов можно с помощью плагинов или без них, вставляя вручную код в файлы. При этом способов существует множество, и все они есть в свободном доступе.
Так, например, в одном случае вам нужно добавить код только в файл single.php, в другом еще и в style.css, в третьем понадобится файл functions.php. Все эти файлы находятся в папке темы — wp-content/themes/ваша_тема/.
Плагины вордпресс
Для вывода записей списком есть хороший плагин WordPress Related Posts.
Также генерирует список соответствующих записей с эскизами и статистику кликов.
Скачать WordPress Related Posts https://wordpress.org/plugins/wordpress-23-related-posts-plugin/
Для вывода с картинками плагин Related Posts Thumbs.
Скачать https://wordpress.org/plugins/related-posts-thumbnails/screenshots/
Я часто слышу, что лучше не пользоваться плагинами и вставлять коды вручную в файлы. Основной причиной называют нагрузку на блог. Здесь хочу заметить, выбирайте правильного хостера и не будет проблем. Да и с каких пор, выполнение вставленного вручную скрипта не влияет на нагрузку?
Я сторонница плагинов по той причине, что когда-нибудь захочу изменить или обновить свою сегодняшнюю тему и все настройки слетят. Не говоря о том, что напрочь забуду, что и куда я дописывала. А представьте человека, которому сделали блог, потому что он ничего в этом не понимает. Одно дело нажимать на ссылки обновления движка и плагинов, другое дело искать изменения в коде.
Теперь предлагаю те коды, которыми я воспользовалась на некоторых блогах в качестве эксперимента и они показали хорошую работоспособность.
1 способ – похожие новости без плагинов — single.php и functions.php
Как вывести похожие посты в вордпресс по тегам
В файл wp-content/themes/тема/functions.php нужно вставить эту функцию:
function digatalart_tag_rel_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),
'showposts'=>7, // Количество выводимых похожих записей.
'caller_get_posts'=>1
);
$my_query = new wp_query($args);
if($my_query->have_posts()){
echo '<ul id="relPost">';
while($my_query->have_posts()){
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
else{
echo '<p>Другие записи по теме отсутсвуют.</p>';
}
wp_reset_postdata();
}
}
Для вызова функции похожих постов по тегам вставим в single.php после статьи:
<?php
digatalart_tag_rel_post();
?>
В файл single.php можно вставить таким образом:
<p><h2>Похожие записи</h2> </p>
<?php
digatalart_tag_rel_post();
?>
<br />
Как вывести похожие записи в вордпресс с сортировкой по рубрике
В файл wp-content/themes/тема/functions.php нужно вставить эту функцию:
function digatalart_cat_rel_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),
'showposts'=> 5, // Количество выводимых похожих записей.
'caller_get_posts' => 1
);
$my_query = new wp_query($args);
if($my_query->have_posts()){
echo '<ul id="relPost">';
while($my_query->have_posts()){
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
else{
echo '<p>Другие записи по теме отсутсвуют.</p>';
}
wp_reset_postdata();
}
}
Теперь для вывода похожих записей на страницах нам необходимо вызвать эту функцию, для этого откройте файл single.php из папки с установленной у Вас темой и вставьте в то место, где необходимо вывести блок с похожими записями, следующую строку.
Для вызова функции похожих постов по рубрике добавим в файл single.php этот код:
<?php
//Вызов функции похожих записей в WordPress без плагинов (по рубрике)
digatalart_cat_rel_post();
?>
2 способ вывода похожих записей без плагинов — single.php и style.css
Изменения вносим в файл вашей темы single.php, вставляем этот код после записи или перед комментариями:
<?php
$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),
'showposts'=>5, // количество выводимых записей.
'caller_get_posts'=>1);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo '<ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
wp_reset_query();
}
?>
В этом случае мы получим вывод похожих записей по категориям. Это является оптимальным вариантом при выборе между тегами и категориями.
Выводим похожие записи с картинками без плагинов
Чтобы рядом со списком ссылок на другие статьи показывались картинки, нужно в файл single.php вставить такой код:
<div class="related_posts">
<h3>Похожие записи:</h3>
<?php
$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, //Если нужен вывод по тегам, то замените на 'tag__in' => $tag_ids,
'post__not_in' => array($post->ID),
'showposts'=>4, // количество отображаемых постов
'orderby'=>rand, // вывод похожих записей в случайном порядке. Если удалить ее, то будут показываться последние статьи из категории.
'caller_get_posts'=>1);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo '<div>';
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<div class="related_posts_box"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?><?php the_title(); ?></a></div>
<?php
}
echo '</div>';
}
wp_reset_query();
}
?>
</div>
Может стоять задача – генерировать вывод записей из конкретно заданных категорий.
При таком подходе будет передаваться вес целенаправленно на нужные вам статьи. Для выполнения нужно добавить этот код в файл single.php:
<div class="related_posts">
<h3>Похожие записи:</h3>
<?php
$args=array(
'category__in'=>array(3,7), // здесь через запятую указаны ID категорий, из которых будете выводить записи.
'post__not_in'=>array($post->ID),
'showposts'=>4,
'orderby'=>rand,
'caller_get_posts'=>1);
$posts = get_posts($args);
foreach($posts as $post){
setup_postdata($post);
?>
<div class="related_posts_box"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?><?php the_title(); ?></a></div>
<?php } wp_reset_postdata(); ?>
</div>
Здесь мы использовали класс дива:
Это означает, что в стилях мы можем придать любой внешний вид. Для этого впишем в файл style.css следующие стили, которые вы сможете изменить под свой дизайн:
.related_posts{
margin:15px 0;
float: left;
width: 100%;
}
.related_posts_box{
background-color: #E8F0F2;
min-height: 200px;
border:1px solid #C6D2D4;
border-radius:5px;
float: left;
margin: 2px;
padding: 6px 3px;
text-align: center;
width: 150px;
font-style: italic;
}
.related_posts_box:hover{
background:#ffffff;
}
Не забывайте, что для вывода картинок нужно иметь миниатюры к каждому посту.
Эта возможность находится справа от редактора и называется «Задать миниатюру». Если такой ссылки у вас нет, то пройдите в правом верхнем углу в админке вордпресс во вкладку «Экран» и поставьте галочку напротив «Миниатюра записи».
В случае, когда нет такого пунктика, напишите в файле functions.php эти строчки:
if ( function_exists( 'add_theme_support' ) )
add_theme_support( 'post-thumbnails' );
Для автоматического создания миниатюр подходит плагин Auto Post Thumbnail – скачать https://wordpress.org/plugins/auto-post-thumbnail/
Для задания миниатюрам нужного размера добавьте в functions.php этот код:
if(function_exists('add_theme_support')){
add_theme_support('post-thumbnails');
set_post_thumbnail_size(200, 200);} //размер миниатюр
3 способ
Выводим похожие посты wordpress с картинками из рубрик без плагинов — singe.php и style.css
Вывод похожих статей их этой же рубрики.
Вставляем следующий код в файл вашей темы singe.php после записи – ищите в коде что-то подобное: <?php the_content(); ?>.
<div class="related_posts">
<h3>Похожие статьи</h3>
<?php
$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, // для вывода из тегов замените на 'tag__in' => $tag_ids,
'post__not_in' => array($post->ID),
'showposts'=>3, // количество похожих сообщений
'orderby'=>rand,
'caller_get_posts'=>1);
$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo '<ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><div id="box-cel"><?php the_post_thumbnail(array( 150,150 )); ?><br><?php the_title(); ?></div></a></li>
<?php
}
echo '</ul>';
}
wp_reset_query();
}
?></div>
Значения, которые меняются по своему усмотрению:
‘showposts’=>3,
<?php the_post_thumbnail(array( 150,150 )); ?>
Здесь меняется размер миниатюры.
Чтобы выводить похожие записи wordpress с картинкой из тегов без плагинов, замените строку
‘category__in’ => $category_ids,
На строку
‘tag__in’ => $tag_ids,
Если на этом остановиться, то статьи будут отображаться в виде обычного списка.
В случае вывода списком можно убрать маркеры перед названием статьи. Для этого в style.css впишем:
/*** Похожие статьи ***/
.related_posts ul {margin-left:0px;
padding-left:0px;
list-style:none;
}
Блочный вывод записей с картинками
Но можно в файле стилей оформить блочный вариант – каждая статья с миниатюрой будет находиться в отдельном блоке. Для этого добавим в style.css примерно такие стили:
.related_posts{
width: 580px;
height: 300px;}
.related_posts ul li{
height: 205px;
border: 1px solid #C3B17F;
border-radius: 3px;
float: left;
list-style: none;
margin: 1px;
padding: 15px;
text-align: center;
width: 158px;
overflow: hidden;}
.related_posts ul li:hover {
background:#F9E9C2;
border: 1px dashed #39B6F9;
}
Все эти варианты кодов я нашла в открытом доступе и использовала на разных блогах. Решила собрать все их на одной странице, чтобы в будущем сама же и могла их найти достаточно легко. Надеюсь, что не мне одной пригодится эта шпаргалка.