Більше результатів...

Загальні селектори
Тільки точні збіги
Шукати у заголовках
Шукати у контенті
Вибір типів постів
Фільтрувати за категоріями
FAQ
Hostenko
Натхнення
Відео уроки
Новини
Плагіни
теми
Уроки
Хакі

Якщо ви ведете великий блог, то напевно вам буде потрібний спосіб, як допомогти своїм читачам знайти інші цікаві пости, ґрунтуючись на тому, що вони читають зараз або прочитали нещодавно.

Створюємо список схожих постів з тієї ж рубрики, що і пост WordPress

inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!

 Завантажити вихідні

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

Дивіться також:

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

У цьому уроці ми покажемо вам, як створити свій плагін, який би виконував це завдання. Плагін буде включати функцію, яка додасть до вашого шаблону single.php код для відображення списку схожих постів під основним контентом поточного посту.

Що вам знадобиться

Для виконання цього уроку вам знадобиться:

  • доступ до адмінки wordpress
  • активна тема із шаблоном single.php
  • редактор коду

Створення плагіна

Почнемо роботу зі створення плагіна. Створіть новий файл для вашого плагіна, ми назвемо наш tutsplus-related-posts.php.

До нового файлу додайте наступний код:

<?php
/**
 * Plugin Name: Tuts+ Related Posts
 * Plugin URI: http://code.tutsplus.com/tutorials/creating-a-list-of-posts-with-the-same-categories-as-the-current-one--cms-22626
 * Description: This plugin identifies what categories the current post is in and outputs a list of the most recent posts in the same categories.
 * Version: 1.0.0
 * Author: Rachel McCollin
 * Author URI: http://rachelmccollin.com
 * License: GPL-3.0+
 * License URI: http://www.gnu.org/licenses/gpl-3.0.html
 * Domain Path: /lang
 * Text Domain: tutsplus
 */

Вам знадобиться змінити деякі авторські деталі на свої, але в будь-якому випадку цей код надасть усі необхідні елементи WordPress для розпізнавання плагіна і дозволить активувати його в консолі.

Визначення рубрики поточного посту

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

Почніть із створення функції, яка зберігатиме ваш код:

function tutsplus_related_posts() {
 
    $post_id = get_the_ID();
    $cat_ids = array();
 
}

Тепер усередині вашої функції використовуйте функцію get_the_category() для отримання масиву даних, що містить рубрики поточного посту:

$categories = get_the_category( $post_id );

Функція має тільки один параметр, ID посту, який визначає, з яким саме постом ви хочете працювати.

Далі, вам потрібно створити масив, який міститиме ID всіх рубрик:

if ( $categories && ! is_wp_error( $categories ) ) {
         
    foreach ( $categories as $category ) {
 
        array_push( $cat_ids, $category->term_id );
 
    }
     
}

Давайте подивимося, що саме цей код робить:

  • Спочатку він перевіряє, чи не повернули $categories null чи помилку.
  • Далі він додає ID кожної рубрики в масив.

Ваша функція тепер виглядатиме так:

function tutsplus_related_posts() {
 
    $post_id = get_the_ID();
    $cat_ids = array();
    $categories = get_the_category( $post_id );
 
    if ( $categories && !is_wp_error( $categories ) ) {
 
        foreach ( $categories as $category ) {
 
            array_push( $cat_ids, $category->term_id );
 
        }
 
    }
 
}

Написання запиту для виведення постів тієї ж рубрики

Тепер, коли у вас є масив з ID рубриками, ви можете використовувати його як аргумент для запиту, який визначатиме посади з цих рубрик.

Всередині функції встановіть наступні аргументи для запиту:

$current_post_type = get_post_type( $post_id );
     
$args = array(
    'category__in' => $cat_ids,
    'post_type' => $current_post_type,
    'posts_per_page' => '5',
    'post__not_in' => array( $post_id )
);

Ці аргументи будуть знаходити пости з тієї ж рубрики та виключатимуть зі списку поточну посаду. Ми налаштували функцію так, щоб вона виводила п'ять постів, але завжди можете внести свої зміни.

Тепер запустимо запит:

$query = new WP_Query( $args );
 
if ( $query->have_posts() ) {
 
    ?>
    <aside class="related-posts">
        <h3>
            <?php _e( 'Related Posts', 'tutsplus' ); ?>
        </h3>
        <ul class="related-posts">
            <?php
 
                while ( $query->have_posts() ) {
 
                    $query->the_post();
 
                    ?>
                    <li>
                        <a href="<?php the_permalink(); ?>">
                            <?php the_title(); ?>
                        </a>
                    </li>
                    <?php
 
                }
 
            ?>
        </ul>
    </aside>
    <?php
 
}
 
wp_reset_postdata();

Функція виводитиме у списку назви постів та посилання на них.

Додавання функції до вашої теми

Останнім кроком є ​​додавання функції до файлу у вашій темі. Ми створили дочірню тему для Twenty Fourteen з новим файлом single.php і додамо до нього функцію, під основним блоком контенту. Ви можете додати її до будь-якого іншого місця у файлі, але не розміщуйте її в середині циклу.

У файл single.php додайте наступний код:

tutsplus_related_posts();

Нижче ви побачите результат:

Створюємо список схожих постів з тієї ж рубрики, що і пост WordPress

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

Альтернативний метод: мітки та таксономії

Ви можете легко змінити цю функцію для роботи з тегами або іншими елементами.

Щоб визначати теги замість категорій, необхідно замінити функцію get_the_category() на get_the_tags(), а потім замінити аргумент для запиту 'категорія__в'на'tag__in'.

Щоб визначити елементи таксономії, ви використовуватимете get_the_terms() замість get_the_category(), додавши taxonomy slug як другий параметр. Потім слід замінити аргумент 'категорія__в'на'tax_query'.

Ви також можете робити пошук постів не тільки за однією класифікацією, для цього просто потрібно буде створити два масиви та два аргументи у запиті.

Висновок

У цьому уроці ви дізналися, як визначити рубрики поточного посту, додати їх ID до масиву і потім використовувати цей масив для відображення постів тих самих рубрик. Це дозволяє краще контролювати процес пошуку схожих постів, а можливість самостійно визначити аргументи для запиту допоможе виводити саме ті пости, які ви хочете.

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

Джерело: code.tutsplus.com
inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!
Олексій Шевченко
редактор wpcafe
Вивчає сайтобудування з 2008 року. Практикуючий вебмайстер, який спеціалізується на створенні сайтів на WordPress. Задати питання Олексію можна на https://profiles.wordpress.org/wpthemeus/

Коментарі до запису: 0

Додати коментар або відгук