Last Updated: February 25, 2016
·
343
· 1fixdotio

Exclude Subcategories in a Loop

function wpse_filter_child_cats( $query ) {

    if ( $query->is_category ) {
        $queried_object = get_queried_object();
        $child_cats = (array) get_term_children( $queried_object->term_id, 'category' );

        if ( ! $query->is_admin )
            //exclude the posts in child categories
            $query->set( 'category__not_in', array_merge( $child_cats ) );
        }

    return $query;
}
add_filter( 'pre_get_posts', 'wpse_filter_child_cats' );