Display Subcategories and post from a Parent Category

So I have this issue regarding the loop within wordpress.
I have the following structure in my site:

  • Parent Category 1
    • Child category 1
    • Child category 2
  • Parent Category 2
    • Child category 1
    • Child category 2
      • Post Cat2.1
      • Post Cat2.2
    • Post 1
    • Post 2

In this case “Parent Category 2” has children category and posts. What I need to display in a “Parent Category Page” are the children categories and its posts without the children category posts.
I’ve looked everywhere but it seems I’ve been searching wrong, any help will be very appreciated

Related posts

Leave a Reply

1 comment

  1. I think this can help:

    $cat_id = get_query_var('cat');
    
    if( ! empty( $cat_id ) ) {
    $category = get_category( $cat_id, ARRAY_A );
    
    if( ! empty( $category ) ) {
        // parent category
        if( $category['parent'] === '0' ) {
    
            // get child IDs
            $terms = get_term_children( $cat_id, 'category' );
    
            foreach( $terms as $term_id ) {
                $child_category = get_term( $term_id, 'category' );
    
                // if you need the category
                $category_name = $child_category->name;
    
    
                /**
                 * Sample data in your child category object: 
                 * 
                 * object(stdClass)[365]
                          public 'term_id' => string '14' (length=2)
                          public 'name' => string 'Child 1' (length=7)
                          public 'slug' => string 'child-1' (length=7)
                          public 'term_group' => string '0' (length=1)
                          public 'term_taxonomy_id' => string '14' (length=2)
                          public 'taxonomy' => string 'category' (length=8)
                          public 'description' => string '' (length=0)
                          public 'parent' => string '12' (length=2)
                          public 'count' => string '5' (length=1)
                          public 'object_id' => string '33' (length=2)
                 * 
                 * 
                 */
    
                // do whatever you like with the categories now...
            }
    
        } else { // in child category
            // do the regular loop here, if ( have_posts() ) ...
        }
     }
    }
    

    also it’s posted Here

    hope it can help you 🙂