Хак: не выводить записи из дочерних категорий WordPress

Задача — при просмотре основной категории не выводить записи, которые содержатся в её дочерних рубриках. Код нужно разместить в functions.php вашей темы. Его совместимость с другими плагинам, версиями WordPress и другими темами я не проверял, будьте внимательны. На моём сайте с WordPress 4.3.1 всё работает.

function filter_child_cats($query) {
    // при вызове нашей функции в нее передается подготовленный объект WP_Query, который мы модифицируем.
 
    // получаем ID категории
    $categ = get_term_by('slug', $query->query_vars['category_name'], 'category');
    // если код родительской категории = 0, значит у категории нет родителя
    if ($categ->parent == "0") :
        // получаем массив с ID подкатегорий
        $child_cats = (array) get_term_children($categ->term_id, 'category' );
        // и модифицируем объект WP_Query
        $query->set( 'category__not_in', array_merge($child_cats) );
    endif;
 
    return $query;
}
// добавляем нашу функцию в цепочку фильтра
add_filter( 'pre_get_posts', 'filter_child_cats' );

Источник кода- http://cats-cry.info/articles/ne-otobrazhat-zapisi-iz-dochernih-kategorij-v-roditelskoj.html

5/5 - (1 голос)

Добавить комментарий