Sage Underscores Genesis
Price Free Free $59.95
Theme type Starter Starter Framework
On GitHub with PHP CS linting
Sass stylesheets
Build script included
Live reloading
Auto-minify and concatenate CSS/JS
Automatically optimize theme images
Modern PHP & requirements
Theme customizer ready
DRY templates with template inheritance
Mobile-first, responsive
Widgets included
Custom header support out of the box

Modern front-end workflow

If Underscores is a “1,000 hour head start”, Sage is a 10,000 hour head start.

Write stylesheets with Sass, automatically check your JavaScript for errors, optimize images, enable synchronized browser testing, and more with our gulp setup.

Stay DRY with the theme wrapper

The goal of a theme wrapper is to remove any repeated markup from individual templates and put it into a single file.

Markup is handled by one file (base.php) instead of being duplicated across all template files like Underscores.

single.php in Sage

<?php get_template_part('templates/content-single', get_post_type()); ?>

single.php in Underscores

<?php get_header(); ?>

	<div id="primary" class="content-area">
		<main id="main" class="site-main" role="main">

		while ( have_posts() ) : the_post();
			get_template_part( 'template-parts/content', get_post_format() );
			// If comments are open or we have at least one comment, load up the comment template.
			if ( comments_open() || get_comments_number() ) :
		endwhile; // End of the loop.

		</main><!-- #main -->
	</div><!-- #primary -->