Відображення списку "Схожих записів" Наприкінці кожної статті - це хороший спосіб зробити читання вашого блогу комфортним и зручним. У цьому уроці я розповім, як додати цю можливість, адже зазвичай у безкоштовних WordPress-темах ця функціональність не передбачена.
Звичайно, у мережі ви зможете знайти масу сторонніх плагінів, які додадуть цю можливість, але більшість з них не мали тієї гнучкості, яка мені була потрібна. Тому я поділюся з вами цим прикладом, який використовую сам. В кінцевому результаті ми отримаємо блок з виведенням заданої кількості схожих записів з мініатюрами.
Примітка: у цьому прикладі записи вважатимуться схожими, якщо вони збігаються мітки.
Крок 1. Відредагуйте functions.php
Перш за все відкрийте файл functions.php у папці вашої поточної теми та додайте ці два рядки з кодом:
add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 196, 110, true );
Ви можете змінити 196 и 110 на будь-яке інше значення ширини та висоти на свій розсуд. Збережіть файл і завантажте його назад на сервер. Цей фрагмент коду додає можливість використовувати мініатюри запису заданого розміру.
Просто відкрийте будь-який зі своїх записів у режимі редагування та задайте їй мініатюру праворуч на бічній колонці. Ця мініатюра також виводитиметься в блоці з іншими схожими записами.
Крок 2. Відредагуйте single.php
Тепер відкрийте файл single.php. Додавання коду до цього файлу вносить зміни до структури зовнішнього вигляду кожного запису на сайті.
Додайте цей код у будь-який рядок файлу single.php в залежності від того, де ви хочете розмістити блок зі схожими записами. Наприклад, я вставлю цей блок одразу після закінчення тексту запису перед коментарями.
<?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'=>4, // Количество похожих записей для отображения. 'caller_get_posts'=>1 ); $my_query = new wp_query($args); if( $my_query->have_posts() ) { echo '<div id="relatedposts"><h3>Похожие записи</h3><ul>'; while ($my_query->have_posts()) { $my_query->the_post(); ?> <?php if ( has_post_thumbnail() ) { ?> <li><div class="relatedthumb"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail(); ?><?php the_title(); ?></a></div></li> <?php } else { ?> <li><div class="relatedthumb"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><img src="<?php echo get_post_meta($post->ID, 'Image',true) ?>" width="196" height="110" alt="<?php the_title_attribute(); ?>" /><?php the_title(); ?></a></div></li> <?php } ?> <?php } echo '</ul>'; } } $post = $backup; wp_reset_query(); ?>
Змініть значення 4 у 10-му рядку коду за бажанням, якщо хочете виводити іншу кількість схожих записів у блоці.
Якщо ви не використовуєте мініатюри записів
Якщо з якоїсь причини ви не використовуєте або не бажаєте використовувати мініатюри записівможна зробити так, щоб у блоці схожих записів виводилися стандартні зображення мініатюр.
У цьому випадку замініть ось цей код у рядку 25 вище
<li><div class="relatedthumb"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><img src="<?php echo get_post_meta($post->ID, 'Image',true) ?>" width="196" height="110" alt="<?php the_title_attribute(); ?>" /><?php the_title(); ?></a></div></li>
на цей:
<li><div class="relatedthumb"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><img src="<?php bloginfo('template_url'); ?>/images/post-thumb.jpg" width="196" height="110" alt="<?php the_title_attribute(); ?>" /><?php the_title(); ?></a></div></li>
Таким чином, буде використано стандартне зображення мініатюри для кожного запису.
Крок 3. Відредагуйте таблицю стилів style.css
Залишився останній крок. Потрібно застосувати якесь форматування нашого блоку.
Наприклад, ви можете скопіювати цей фрагмент у файл вашої теми style.cssщоб схожі записи виводилися горизонтальною плиткою, а зображення мініатюр були в рамці шириною 5 px.
#relatedposts h3 { font-size: 24px; margin: 10px 0px 20px 0px; font-weight: normal; } #relatedposts ul { list-style: none; } #relatedposts ul li { float: left; margin-right: 15px; width: 206px; } #relatedposts img { border: 1px solid #DDD; background: #F8F8F8; padding: 5px; margin-bottom: 5px; } #relatedposts a:hover { color: #51B1D3; }
Що в нас вийшло
В результаті в кінці кожного посту ви побачите приблизно такий блок з схожими записами.
Коментарі до запису: 13
<?php
}
echo '';
}
тут здається треба так:
<?php
}
echo '';
}
Інакше все дуже весело пливе.
Скажіть, будь ласка, у яке місце коду слід робити вставки у файлі functions.php та style.css?
У фалі functions.php, можна, наприклад, у самому низу перед закриттям тега ?>, в
style.css також у самому низу, з нового рядка
А мені сподобалася стаття, коротко і насправді! Розбиратимуся
з тонкощами
Велике спасибі за пост, поки що це єдиний метод, який мені дійсно допоміг зробити практично так, як треба. Єдине, що не виходить, так це розмістити їх горизонтально, не підкажіть як.
Для цього потрібно використовувати CSS. В уроці є маленький шматок коду CSS, який можна вставити у файл вашої теми style.css, і плитки будуть в горизонтальному положенні.
Якщо ви маєте на увазі код, розташований у самому низу, який потрібно вставити в style.css, то я вже його вставив і не працює. Все одно вертикальне розташування виходить. А ще не знаєте, як відредагувати код, щоб скорочувати назву заголовка.
Все це добре, але як бути, якщо мітки на сайті не використовуються? можна зробити схожі записи за категоріями? опису новин?
Так, це дуже просто реалізується за допомогою готових плагінів. Подивіться на офіційному репозиторії плагінів WordPress.
питання, чи не з'являються зображення схожих записів, у мене на блозі вже більше ста записів, так що перебивати вручну мініатюри для кожного запису - це нереально, та й не технічно і не грамотно, т.к. треба шукати рішення, яке дозволить реалізувати все через код, як це зробити, тобто виправити, щоб зображення показувалися?
Якщо у вас не виходить за цією інструкцією, спробуйте скористатися готовими плагінами для виведення мініатюр подібних записів (related posts) у бібліотеці WordPress плагінів. Можливо, проблема не у мініатюрах.
в тому те, що плагін посуває такі речі як підписка по фідбернер вниз, за блок схожих записів з мініатюрами, таким чином фід виходить не відразу ж після статті, а це дуже позначається на кількості тих, хто підписався.
Саме з цієї причини я і відмовився від використання плагіна, поки що використовую просто схожі записи, без картинок, краще так, ніж підписка була внизу, де її практично не бачать.
У мене чомусь не виходить зробити рівно
http://s61.radikal.ru/i172/1303/6b/29e8f57a6ecc.jpg