Show all posts for a specific category/author

The number of posts displayed in any loop by default is controlled by Settings > Blog pages show at most. To show all posts, you can enter a huge number, but -1 (which is the value to use for the posts_per_page paramerter in WP_Query) does not work here.

It is possible to show all posts on the category and author archives while still showing a limited number of posts within your main blog area. To do this, use the Blog pages to show at most setting to configure the number of posts to show within the main blog, then use the pre_get_posts hook to modify the other archives to suit your preferences. Add the following code to your theme’s functions.php file:

/**
 * Modify the query to show all posts on category and author archives.
 * 
 */
function wpse238882_pre_get_posts( $query ) {
  if ( ( $query->is_author() || $query->is_category() ) && $query->is_main_query() ) {
    $query->set( 'posts_per_page', -1 );
  }
}
add_action( 'pre_get_posts', 'wpse238882_pre_get_posts' );

You can still use the author.php and category.php templates to customize the output of your author and category archives, but this is not necessary to simply modify the number of posts displayed, which has been demonstrated above. Check out the template hierarchy Codex entry for more information on customizing templates.