Задача — при просмотре основной категории не выводить записи, которые содержатся в её дочерних рубриках. Код нужно разместить в 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