WordPress pagination not working because of subcategory

I think you misunderstood my linked post. It is a quite overwhelming amount of info (which you should reread as many times), but in short, you should not be using a custom query in place of your main query on the home page or any type of archive page.

I do not know why you are actually using a custom query, but if you need to alter the main query to adjust something, you should be using pre_get_posts or any of the posts_* filters where you can directly alter the generated SQL query.

You should first revert back to the default loop in your category page. You should remove all the code in your EDIT and replace it with

if ( have_posts() ) {
    while ( have_posts() ) {
    the_post();

        // YOUR HTML MARKUP AND TEMPLATE TAGS

    }
}

Your next posts link code does not make sense and also does not look correct. A note here, next_posts() is depreciated, you should use next_posts_link() and get_next_posts_link(). Look at the examples in the links on exact use case. Remember, the posts links are already setup to work with the main query by default, so you don’t need any modifications.

Just one final note, you should have everything working at this point. Remember to do this on all your category pages if you are using different templates. If you need to adjust the amount of posts shown on a category page, you can use

add_action( 'pre_get_posts', function ( $q )
{
    if (    !is_admin() // Run only on front end queries
         && $q->is_main_query() // Only target the main query and not custom queries
         && $q->is_category() // Run only on category archive pages
    ) {
        // You can make use of all parameters in WP_Query
        $q->set( 'posts_per_page', 11 );

    }
});

If you need to remove posts from child categories on your category pages, you can make use of the parse_tax_query filter as described by @ialocin in his answer here