This article was originally published on this site


Over the past decade, I have used a lot of different WordPress themes and have been very disappointed. With most themes, I still had to do a lot of customization to make it do and work the way I wanted it to. And the ones that have a lot of control are bloated and slow.

A couple of years ago I decided to give GeneratePress a try, and let me just say, it’s by far the best WordPress theme I’ve found in 10 years. I was blown away and have moved all my sites to GeneratePress. I’ll go into exactly why in my in-depth GeneratePress review below.

And if you’re wondering, yes I have tried Genesis, Astra, OceanWP, Avada, X theme, Divi, MyThemeShop, as well as many other lightweight and heavier multi-purpose themes.

GeneratePress Review

GeneratePress is a free WordPress theme created by Tom Usborne, a developer from Canada. I had seen it for years in the WordPress repository.

Most of you know that I’m pretty picky when it comes to web performance, and so I tend to ignore everything in the repository. Typically because a lot of stuff on there is not that great, or not supported for long. However, in this case, that was a mistake.

The theme currently has over half a million downloads, 200,000+ active installs, with over 950 5-star ratings. So obviously Tom is doing something right here.

GeneratePress in WordPress repository

GeneratePress in WordPress repository

GeneratePress in WordPress repository

I actually installed the free version of the theme and in a matter of 15 minutes purchased the premium version. I could tell right off the bat, the developer was thinking exactly how I was envisioning a theme should work. And I’ll go into that more below, but let’s first look at some of the features.

I’m going to be covering the premium version of the theme because it’s worth every penny. In fact, Tom, if you ever read this and are visiting Scottsdale, Arizona, coffees on me. ☕

Features

  • Super lightweight and fast. Modular design allowing you to enable/disable things you don’t want running. This is one of the biggest reasons I love GeneratePress.
  • Responsive, looks great across all devices.
  • Schema built-in, for better results in SERPs.
  • Impressive integration with the WordPress Customizer. I haven’t been a fan of the customizer in the past, but Tom does it right.
  • Compatible with all popular plugins, Yoast SEO, WooCommerce, Easy Digital Downloads, BuddyPress, bbPress, and WPML. Great browser support back to IE8.
  • It also works great with the popular fast-growing Elementor page builder. If you want to dive into even more customizations, these are a great combo. I have also read that people using Beaver Builder have had success.
  • Translation ready.
  • Elements, which allow you to basically add things anywhere you want on your site.
  • Tons of hooks and filters which make it great for developers.
  • Great active support from the developer. On average, 3 updates per month.
  • A great combo with Tom’s new plugin, GenerateBlocks. This is a small collection of lightweight WordPress blocks that can accomplish nearly anything.

The documentation is also incredible. Besides have great documentation on their site, the theme has been around long enough that everything I Googled throughout the setup process was found within a few seconds from their forum.

GeneratePress disable Google Fonts

GeneratePress disable Google Fonts

GeneratePress disable Google Fonts

Pricing

GeneratePress is completely free, however, you will want the add-ons included. For $49.95 you get all 14 add-ons, can use it on unlimited websites, and get one year of support and updates. It’s definitely worth the money. I have already moved woorkup into GeneratePress and am working on moving over eight more sites. So a total of nine websites will be running on GeneratePress by the time I am done. $49.95 is a steal if you ask me!

Here are the add-ons that are included:

  • Colors: Easily color any element you can think of in the customizer.
  • Typography: Choose font sizes, font families (including Google Fonts), font weights and more. You can also use system fonts so you don’t have to load any font files!
  • WooCommerce: Take control of your WooCommerce store with new typography, color & layout options.
  • Elements: Dynamic page heros, an advanced hook system, and custom theme layouts. This allows you to add your own custom content throughout various areas in the theme.
  • Sections: Easily create seamless sections inside your pages to build unique layouts.
  • Menu Plus: Add a sticky menu (fade, slide or no transition), menu logo, mobile header, and a slide-out menu!
  • Blog: Display your posts in columns (magazine) or masonry. Change the post image size and alignment, plus much more.
  • Backgrounds: Upload background images to various areas throughout GeneratePress.
  • Spacing: Control element spacing including your header, content, widgets, menu items, and sidebar width.
  • Secondary Nav: Add a second navigation element to GeneratePress with all the same options as your primary navigation.
  • Copyright: Add your own custom copyright message at the bottom of your website.
  • Disable Elements: Disable specific elements on certain pages and posts such as the header, navigation, content title, and footer.
  • Hooks: Add new options to your Dashboard that allow you to add in your own custom content throughout various areas in the theme.
  • Import Export: Easily export and import your settings from the customizer!

Oh and don’t forget, you get a 40% discount on renewals. So it gets a lot cheaper to keep using GeneratePress.

Diving into GeneratePress

Now it’s time for the fun part! I always test a new theme right out of the box without any customizations to just see how fast the base is. This tells me a lot of what I can expect by the time I add everything to it. Running the stock GeneratePress WordPress theme on Kinsta hosting clocked in at a whopping 265 ms load time. I was very impressed.

"GeneratePress

"GeneratePress

speed test

One thing I was worried about with GeneratePress was that the modular design was going to generate a lot of big files, but that is not the case. You can tell that Tom literally worked hard on making sure that every file loaded in GeneratePress is as small as possible. With HTTP/2, the number of files isn’t as important. But the size is! Take a look at some of the core GeneratePress files below:

  • /generatepress/css/unsemantic-grid.min.css 2.9 KB
  • /generatepress/style.css 7.1 KB
  • /generatepress/css/mobile.min.css 1.6 KB
  • /generatepress/js/navigation.min.js 1.1 KB
  • /generatepress/js/dropdown.min.js 1.5 KB
GeneratePress small files

GeneratePress small files

GeneratePress small files

This is a developer that cares about performance! And I have seen the same throughout all of the premium add-ons. They are literally as small as you can possibly get them. In fact, Font Awesome is probably the biggest file included. And that isn’t even his. With Font Awesome 5 coming around the corner, we can expect that to get smaller too.

The premium add-ons are set up in what I would call a modular design. You can activate/deactivate anything you aren’t using to ensure they don’t load on your site. As the co-developer of the Perfmatters plugin which has a script manager built-in, I felt right at home with this. Everything should be designed this way.

GeneratePress modules

GeneratePress modules

GeneratePress modules

If you’re curious, I am using the following add-ons on this site:

  • Blog
  • Colors
  • Copyright
  • Elements
  • Menu Plus
  • Page Header
  • Spacing
  • Typography

No Child Theme Needed

One of the best features of GeneratePress is that I no longer have to use a Child theme. This makes my life so much easier. No more editing my functions.php or header.php files. I can literally update my GeneratePress theme this very minute and not lose a single customization.

The elements add-on definitely helps make this possible. It allows you to add custom code/PHP and hooks anywhere throughout your WordPress site.

Author Bio Box

An example of an element and hook would be my author bio box that you see at the bottom of this post. You can elements just about anywhere on your site, in your header, content section, after content, footer, etc.

GeneratePress author bio box

If you want my author bio box code, here it is. I’ve tweaked this so the links open in a new tab by default. I like to add a link to Twitter in my bio box.

<div class="author-box">
        <div class="avatar"><?php echo get_avatar( get_the_author_meta( 'ID' ));?></div>
        <h5 class="author-title"><?php printf( get_the_author_meta( 'display_name') );?></h5>
        <div class="author-summary">
                <p class="author-description"><?php echo links_add_target(get_the_author_meta( 'description' )); ?></p>
        </div>
</div>

You will want to check the “Execute PHP” box and for the hook, use after_content. You could place this anywhere you want. Then under Display Rules you can choose that you only want it to show on your blog posts.

GeneratePress element display rules

You will also need a little CSS to style the author bio box. You can simply drop this in the WordPress Customizer under Additional CSS.

.author-description {
    margin-bottom:5px;
}
.author-box {
    padding: 4%;
    margin-top: 30px;
    display: flex;
    flex-wrap: wrap;
        background-color: #fafafa;
}
.author-box a {
    border-bottom: 2px solid rgba(45, 130, 230, 0.4);
}
.author-box .avatar {
    width: 40px;
    border-radius: 100%;
    margin-right: 20px;
}
h5.author-title {
    margin-bottom: 0.5em;
          font-size:1.5em;
}

Here is how the author box looks. You can, of course, customize the CSS to match the look of your site.

GeneratePress author box

Code Snippets

Another great combination to use with GeneratePress is the free Code Snippets plugin. This allows you to add custom PHP which you simply want to run across your entire site. Tom, in fact, recommends this plugin in the GeneratePress documentation. You can see below that I have functions running for all sorts of things.

Code Snippets

Here are a few PHP functions I use with GeneratePress:

Read More Button Snippet

This function adds the read more button on the front blog page.

add_filter( 'wp_trim_excerpt', 'tu_excerpt_metabox_more' );
function tu_excerpt_metabox_more( $excerpt ) {
        $output = $excerpt;
        $settings = wp_parse_args( 
                get_option( 'generate_blog_settings', array() ), 
                generate_blog_get_defaults() 
        );
        
        if ( has_excerpt() ) {
                $output = sprintf('%1$s <br /><a class="read-more" href="%2$s">%3$s  →</a>',
                        $excerpt,
                        get_permalink(),
                        wp_kses_post( $settings['read_more'] )
                );
        }
        
        return $output;
}

Default Block Editor Styles Snippet

The block editor (Gutenberg) is still a little weird when it comes to styling and themes. Because of this, I simply have this snippet that defaults the editor back to the WordPress core version. This makes writing a lot nicer.

add_filter( 'generate_show_block_editor_styles', '__return_false' );

Perfmatters Lazy Load Exclusions

I have lazy loading enabled in our Perfmatters plugin. However, I don’t want the logo on this site or the featured images lazy-loaded. The reason is this creates a weird flash. So I simply add this snippet of code to basically not lazy load anything at the top of the page.

/*add_filter('generate_logo_output', 'tu_logo_class', 10, 3);
function tu_logo_class($output, $logo_url, $html_attr) {
  $html_attr = str_replace('class="', 'class="no-lazy ', $html_attr);
        printf(
                '<div class="site-logo">
                        <a href="%1$s" title="%2$s" rel="home">
                                <img %3$s />
                        </a>
                </div>',
                esc_url( apply_filters( 'generate_logo_href' , home_url( '/' ) ) ),
                esc_attr( apply_filters( 'generate_logo_title', get_bloginfo( 'name', 'display' ) ) ),
                $html_attr
        );
}*/

function perfmatters_lazyload_exclude_attributes($attributes) {
  $attributes[] = 'class="header-image"';
  $attributes[] = 'class="attachment-full size-full';

  return $attributes;
}
add_filter('perfmatters_lazyload_excluded_attributes', 'perfmatters_lazyload_exclude_attributes');

You can also check out more of Tom’s public 250+ Gists, which were all developed for GeneratePress.

Other Things I Love About GeneratePress

On each page/post you have a lot of options. You can change the sidebar layout and the footer widgets.

Sidebar layout and footer widgets

Sidebar layout and footer widgets

Sidebar layout and footer widgets

You can easily swap a page between the default to a full width page, as well as disable elements.

Page builder and disable elements

Page builder and disable elements

Page builder and disable elements

The WordPress customizer options is where GeneratePress really shines! Remember, a lot of these options are enabled by the premium add-ons. I can’t show you everything, otherwise, we would be here all day. But let me show you couple which really come in handy.

Customizer Layout Options

Here are just a few of the many customizer layout options. You can easily change the container width of the page, the spacing, padding, etc… on every single element!

Layout options

Layout options

GeneratePress Layout options

Colors

Here are just a few of the many color options.

GeneratePress colors

GeneratePress colors

GeneratePress colors

Typography

Here are just a few of the many typography options. You can control everything via the WordPress customizer.

GeneratePress typography

GeneratePress typography

GeneratePress typography

I use system fonts on my websites and in previous themes I have had to add additional custom CSS to make that work. No more! GeneratePress has the option to use system fonts (system stack) right out of the box.

Blog

Here are just a few of the many blog options. This allows me to easily have a full width featured image on my front blog page, or use my smaller featured images and the text to the right of the image. Again, in previous themes, I have added custom CSS for the second option. In GeneratePress its just a few clicks to change it up.

GeneratePress blog

GeneratePress blog

GeneratePress blog

Updated Date on Blog Posts

The developer even has things such as the post and publish date on posts built-in. As many of you know, I prefer using the updated date on my posts because I spend a lot of time updating old content. This can easily be swapped out with a little CSS.

Drop the following into the WordPress Customizer under Additional CSS.

.posted-on .updated {
     display: inline;
 }
 .posted-on a time:nth-child(2) {
     display: none;
 }
 .posted-on a time:first-child:before {
     content: "Updated: ";
 }
 .posted-on a time:last-child:before {
     content: "Published: ";
 }

The above code will show “Published” when you first publish a post and it will then change to “Updated” once you have made any changes. And yes, this is fully compliant with Schema.

SVG Logo and Favicon in GeneratePress

Want to use an SVG logo in GeneratePress? Of course you do! All you need to do is install the free Safe SVG plugin. By default, WordPress won’t let you upload the SVG media type for security reasons.

SVG logo in GeneratePress

SVG logo in GeneratePress

SVG logo in GeneratePress

You also don’t need to worry about a favicon. You can upload a site icon and GeneratePress will crop this and generate all the different icons for your site: favicon, mobile apps, etc.

GeneratePress site icon

GeneratePress site icon

Site Icon

GenerateBlocks

Tom, the developer of GeneratePress, recently released GenerateBlocks. This is a small collection of lightweight WordPress blocks that can accomplish nearly anything. Note: This is still in beta, but I’m using it on my production sites already.

I now use blocks for everything on my sites. In fact, I rebuilt my entire e-commerce site (EDD), perfmatters.io, using GeneratePress and GenerateBlocks with no code! In fact, I was able to strip out 83 lines of custom code I previously had. Amazing.

Ecommerce suite built with GeneratePress and GenerateBlocks

Ecommerce suite built with GeneratePress and GenerateBlocks

Ecommerce suite built with GeneratePress and GenerateBlocks

You might be wondering how is this different than a page builder? Well, here’s how. Tom, as always, focused entirely on performance.

GenerateBlocks only adds one CSS file per page, which contains all of the CSS generated by your options. There is no javascript or inline CSS – it’s all in one, tidy place. So in my opinion, this is the best of both worlds. I can build anything I can imagine, without all the bloat.

Below is a screenshot of what the homepage above looks like in the block editor using GenerateBlocks. You can see how I built the entire page using blocks. Another awesome thing is that you can copy/paste an entire page of blocks to a completely different site, and it comes across perfectly!

Block editor using GenerateBlocks

Block editor using GenerateBlocks

Block editor using GenerateBlocks

Responsive Columns

Previously with GeneratePress, I used Tom’s awesome and free Lightweight Grid Columns plugin. Its features include:

  • Desktop grid width
  • Tablet grid width
  • Mobile grid width
  • Add custom classes
  • Add custom inline styles
  • Equal height columns

While that is still a great plugin, with GenerateBlocks, you can now take advantage of the responsive grid block. This means I was able to get rid of the column plugin altogether.

Responsive grid block in GenerateBlocks

Responsive grid block in GenerateBlocks

Responsive grid block in GenerateBlocks

A great example of how to use this is the features section on the homepage of perfmatters.io. I drew boxes where the grids are below so that you can see what is happening behind the scenes.

Grids

Grids

Grids

You might want to also grab Tom’s amazing WP Show Posts plugin too. See my featured articles on the sidebar of this site? That is using the WP Show Posts plugin. I have it set to show posts from a specific “featured” category. You can also have it show last modified/updated posts, recent posts, etc. I’m using the free version and it works great.

Featured posts sidebar

Featured posts sidebar

Featured posts sidebar

SVG Icons

The awesome thing about GeneratePress in terms of performance is that it doesn’t include FontAwesome out of the box. FontAwesome is great, but it’s also huge in terms of page weight.

GeneratePress includes its own basic SVG icons. However, the best feature by far in GenerateBlocks, is that you can paste in the SVG code of any icon you want. This is amazing! No more packaging up icon packs, now you can easily add only what you need.

Speed Tests

For those of you who are regular readers, you probably didn’t even notice that I changed the entire theme that powers woorkup.com. It only took me about an hour to get GeneratePress to mimic my MyThemeShop theme which I had spent a year customizing. Here is a comparison below.

woorkup.com Old MyThemeShop Theme

My old MyThemeShop theme was already pretty fast, but I spent a lot of time customizing it. In fact, I’ve gotten a lot of emails from you guys asking me to publish all of my customizations. My advice now is, just get GeneratePress!

MyThemeShop theme speed test

MyThemeShop theme speed test

MyThemeShop theme speed test

woorkup.com New GeneratePress Theme

With the new GeneratePress theme I was able to achieve faster speeds and 600 fewer lines of code! And remember, I don’t have a child theme. All the customizations were made using the awesome GP hooks and snippets plugin (both CSS and PHP).

GeneratePress theme speed test

GeneratePress theme speed test

GeneratePress theme speed test

Like the WordPress theme I have running on woorkup? You’re in luck. Tom asked if he could create a copy of woorkup for the new GeneratePress site library. I’m happy to let you know that you can now install my woorkup theme on your GeneratePress site with just a single click! It’s called the Marketer theme. Get started with a great blog layout instantly.

GeneratePress Marketer WordPress theme

GeneratePress Marketer WordPress theme

GeneratePress Marketer WordPress theme

brianleejackson.com Old Array Theme’s Theme

I also moved over my personal site, brianleejackson.com, to GeneratePress. Previously I was using a theme from Array Themes. It is a pretty basic minimal site, as I don’t use it for much. As you can see it already loaded pretty fast.

Array Themes speed test

Array Themes speed test

Array Themes speed test

brianleejackson.com New GeneratePress Theme

I was able to duplicate the entire look 100% in GeneratePress in under an hour. And as you can see it loads even faster! Amazing. I was even able to get rid of a few plugins that weren’t needed because of GeneratePress.

GeneratePress theme speed test

GeneratePress theme speed test

GeneratePress theme speed test

forgemedia.io Old Array Theme’s Theme

I also moved over our business site, forgemedia.io, to GeneratePress. Previously I was using a theme from Array Themes. It is a pretty basic minimal site, as we simply use it for our LLC. As you can see it already loaded pretty fast.

Array Themes speed test

Array Themes speed test

Array Themes speed test

forgemedia.io New GeneratePress Theme

I was able to again move everything over and get it looking exactly how I wanted it in under an hour. And as you can see it loads even faster! Amazing. I was able to get rid of a total of four plugins and it dropped my total page weight 2x!

GeneratePress theme speed test

GeneratePress theme speed test

GeneratePress theme speed test

I can’t express my excitement about finding GeneratePress and I am moving over all of my sites to it (which includes some EDD e-commerce sites). Once I have my 9 sites all running in GP without any child themes, my life will be a breeze! The developer has restored my faith in multi-purpose themes, and that when done the right way, can actually perform faster.

Visit GeneratePress

And the best news is, I now have a billion more options to choose from than I did before.

Summary

I would love to hear what you think about GeneratePress and GenerateBlocks. Did any of you faithful readers even know I changed my theme a couple of weeks ago haha? I also hear that it works amazingly with Elementor, although personally, GeneratePress does everything I need right now.

Have any questions about GeneratePress? I know it pretty well now, so feel free to ask anything you want.

Get More Stuff Like This

Marketing, WordPress, Blogging Tips, SEO and Reviews, twice a month.

Thank you for subscribing.

Something went wrong.

GeneratePress Review
  • Features

  • Quality

  • Price

  • Support

Summary

I was not a believer in fast multi-purpose themes until I ran across GeneratePress. It’s one of the best WordPress themes/frameworks I have run across in 10 years!