Flector

Как вывести записи только родительской рубрики?

WordPress по умолчанию добавляет записи дочерних рубрик в вывод записей родительской рубрики. Таким образом, вывести записи только родительской рубрики без записей дочерних рубрик нельзя. Данную ситуацию можно исправить с помощью такого кода, добавленного в файл functions.php вашей темы:

//вывод записей только родительской рубрики start
function wph_only_parent_category($query) {
    if (!is_admin() && $query->is_main_query() && $query->is_category())
        $query->set('category__in', array(get_queried_object_id()));
}
add_action('pre_get_posts', 'wph_only_parent_category');
//вывод записей только родительской рубрики end

Данный сниппет будет работать только с основным циклом вывода записей (свои циклы, заданные через query_posts будут игнорироваться). Если вас это не устраивает, то вы можете убрать проверку на основной цикл:

//вывод записей только родительской рубрики start
function wph_only_parent_category($query) {
    if (!is_admin() && $query->is_category())
        $query->set('category__in', array(get_queried_object_id()));
}
add_action('pre_get_posts', 'wph_only_parent_category');
//вывод записей только родительской рубрики end

Этот код будет работать с любыми циклами вывода записей.


Комментарии (6 комментариев)
  1. игорь:

    Спасибо!!!

  2. Спасибо огромное! То что нужно!

  3. Artem:

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

  4. Mark:

    Спасибо Вам, бессребреники-человеколюбцы, за помощь! Работает код.

  5. ok:

    есть ли возможность вывести посты из текущей подкатегории (дочерней рубрики), то есть, если структура такова: food - burger (food - основная, burger - дочерняя), если нахожусь в записи, которая относится только к Burger, то ниже выводятся посты, которые также относятся к данной дочерке и соответственно с другими рубриками и подрубриками.. ?

  6. ok:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    <?php
    $mycat=get_the_category();
    $mycat=$mycat[0];
    $posts = get_posts('numberposts=5&category='.$mycat->cat_ID.'&exclude='.$post->ID);
        foreach($posts as $post) :?>
    <li>
    <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    </li>
    <?php endforeach; ?>

    вот код, только он выводит записи из родительской, если нахожусь в дочерней

Написать комментарий

Для вставки кода воспользуйтесь кнопкой "Код". Используйте предпросмотр!