## Edit ## Note: you can use the same technique for a *custom page template*, with a custom loop via `new WP_Query()`: // Post Formats $post_formats_array = array( post-format-aside, post-format-audio, post-format-chat, post-format-gallery, post-format-image, post-format-link, post-format-status, post-format-quote, post-format-video ); // Custom query args $standard_posts_query_args = array( 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', // Use array defined above, // or try omitting 'terms' entirely 'terms' => $post_formats_array, 'operator' => 'NOT IN' ) ) ); // Custom query $standard_posts = new WP_Query( $standard_posts_query_args ); // Custom query loop if ( $standard_posts->have_posts() ) : while ( $standard_posts->have_posts() ) : $standard_posts->the_post(); // Loop markup here endwhile; endif; ## Pagination ## For pagination, [please refer to this Question/Answer][1]. ## Original Answer ## Why not just exclude posts with post formats from the main posts archive? function wpse129372_filter_posts_archive( $query ) { if ( $query->is_main_query && $query->is_archive() ) { $post_formats_array = array( post-format-aside, post-format-audio, post-format-chat, post-format-gallery, post-format-image, post-format-link, post-format-status, post-format-quote, post-format-video ); $tax_query = array( array( 'taxonomy' => 'post_format', 'field' => 'slug', // Use array defined above, // or try omitting 'terms' entirely 'terms' => $post_formats_array, 'operator' => 'NOT IN' ) ); $query->set( 'tax_query', $tax_query ); } } add_action( 'pre_get_posts', 'wpse129372_filter_posts_archive' ); This, paired with (I assume) custom template files (or custom page templates) for posts with post formats, would be a fairly simple way to show only "standard" posts in the archive index. [1]: http://wordpress.stackexchange.com/questions/120407/how-to-fix-pagination-for-custom-loops