Genesis multiple category custom loop 404s after first page

Ok so, I have a page which shows a feed of posts in the “news” category (url is: mydomain.com/category/news ), but the client wants it to also show posts in the “press-releases” category.

So in the category.php page, I used the following code thinking it would loop through all posts which are either in the “news” or “press-release” category:

Read More
ob_start();
    single_cat_title();
    $this_cat = ob_get_contents();
ob_end_clean();



if( $this_cat == 'News' || $this_cat == 'Press Releases' ) {

    remove_action( 'genesis_loop', 'genesis_do_loop' );
    add_action( 'genesis_loop', 'vacation_do_custom_loop' );

}

function vacation_do_custom_loop() {

    global $wp_query;
    global $paged; // current paginated page
    global $query_args; // grab the current wp_query() args


    $args = array(
        'category__in' => '5, 1', // i also tried 'category_name' => 'news, press-releases'
        'posts_per_page' => 9,
        'paged'            => $paged // respect pagination
    );

    genesis_custom_loop( wp_parse_args($query_args, $args) );

}

Well after clicking page 2 (of like 7), Im taken to a 404.

I think the issue is that there is only 1 post in the “news” category, and there are about 40 in “press-releases”. So the pagination shows pages for all 40+ posts, but because there is only a single “news” post the second page doesnt actually exist? Since the url is /category/news WordPress is creating the pagination based on the number of “news” posts?

How can I get pagination working here?

Related posts

Leave a Reply

1 comment

  1. Provided category names are not changing, and the site is in one language only, you could create two category templates: category-news.php and category-press-releases.php, then everything will pretty much work without you having to fetch the category and including the category__in parameter in the query.

    Also, you always want to put your add_action calls inside your ‘functions.php`, not inside the template itself.