Как добавить блок «Больше записей из этой рубрики» после статьи в WordPress

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

Покажите, что вам есть что сказать

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

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

Например, если у вас есть блог о различных профессиональных группах, то вам не нужно отображать в блоке похожих новостей под записью об информационных технологиях статьи о текстиле. Какое-то количество свежих записей из той же рубрики будут более релевантными, не так ли?

Создаем список «Больше записей из этой рубрики»

Как вы уже догадались, вывести список свежих записей из рубрики текущей статьи будет намного проще, нежели выводить похожие записи на основании проставленных тегов. Нам нужно будет всего лишь получить рубрику записи, а затем вывести некоторое количество записей из нее, за исключением той статьи, которую сейчас просматривает пользователь. Аргументы, которые мы можем передавать функции get_posts(), содержат всё необходимое.

<?php
// Список "Больше записей из этой рубрики"
function devise_more_from_cat( $title = "Больше записей из этой рубрики:" ) {
    global $post;
    // Мы должны получить первую рубрику текущей записи
    $categories = get_the_category( $post->ID );
    $first_cat = $categories[0]->cat_ID;
    // Начнем $output с вывода заголовка и открывающего тега <ul>
    $output = '<div id="more-from-cat"><h3>' . $title . '</h3>';
    // Агрументы для списка записей
    $args = array(
        // Он должен быть в первой рубрике нашей записи:
        'category__in' => array( $first_cat ),
        // Наша текущая запись НЕ должна быть в списке:
        'post__not_in' => array( $post->ID ),
        // ...и должно обрабатываться 5 записей - это значение вы можете изменить на своё усмотрение:
        'posts_per_page' => 5
    );
    // Функция get_posts()
    $posts = get_posts( $args );
    if( $posts ) {
        $output .= '<ul>';
        // Начинаем цикл
        foreach( $posts as $post ) {
            setup_postdata( $post );
            $post_title = get_the_title();
            $permalink = get_permalink();
            $output .= '<li><a href="' . $permalink . '" title="' . esc_attr( $post_title ) . '">' . $post_title . '</a></li>';
        }
        $output .= '</ul>';
    } else {
        // Если записей нет, то нам всё равно нужно что-то вернуть
        $output .= '<p>Извините, в этой рубрике только одна запись и Вы только что ее прочли!</p>';
    }
    // Закываем тег <div> и возвращаем $output:
    $output .= '</div>';
    return $output;
}
?>

Готово! Вы можете добавить эту функцию в свой файл functions.php вашей темы или в плагин для сайта WordPress, а затем вывести ее (вот так <?php echo devise_more_from_cat( ‘Больше записей из этой рубрики:’ ); ?>) в любом месте в файле single.php темы.

Заключение

Да, контент — это «король», но одинокий король — слабый король, и люди могут перестать уважать такого «короля».

Как вы считаете, есть ли еще элементы страницы, которые могут помочь «королю»? Пишите в комментариях!

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top