Don’t use the Genesis Blog Page Template

(Short answer: it’s not the main query, so customizations to the query won’t work. Make your blog the WordPress way, using Settings > Reading).

Genesis has been under development for quite a few years now. Given it’s history and large user base, there’s a few old features that would be removed, given the opportunity, but are needed for backwards compatibility – so people who have used them in the past can keep using them.

The biggest one (in my opinion) is the blog page template.

When you first install WordPress, your homepage lists your most recent blog posts. If you’d like a static homepage and to move your blog to a subpage, you can do so in Settings > Reading.

WordPress looks at specific files for these different pages. home.php is used for your blog posts listing (whether that’s your homepage or a subpage). front-page.php is used for the homepage of your site, whether you want blog posts or a static front page.

So, if you want a static homepage and your blog on a subpage like /blog, create the pages “Home” and “Blog”, go to Settings > Reading and set those as the appropriate pages to be used. If you’d like to create a template file to control the homepage, use front-page.php. If you’d like to create a template file to control the blog, use home.php.

Many of the older StudioPress child themes incorrectly use home.php for their static homepage. I’m not sure the reason, but my guess is they wanted to save people the step of going to Settings > Reading; when the theme was activated, the homepage was already a static homepage. The problem here is now you can’t have a blog. If you created a page and set it as the blog in Settings > Reading, it would use the home.php file which is now a static homepage.

Their solution to this was to create a page template that lists blog posts. The problem here is the blog posts are listed in a custom loop, not the main loop of the page (the main loop is the page’s content, which is replaced with this custom loop). This means plugins and other code that are designed to modify the main blog do not work.

What I recommend:
1. Never use the blog page template.
2. If you’re using a StudioPress theme that has home.php in it and it’s used for a static homepage, rename it to front-page.php. If you’re using one of the newer HTML5 themes, you should be fine. It’s only the older ones that have this issue
3. If you’re building a child theme for your client, exclude the Blog page template

Bill Erickson

Bill Erickson is the co-founder and lead developer at CultivateWP, a WordPress agency focusing on high performance sites for web publishers.

About Me
Ready to upgrade your website?

I build custom WordPress websites that look great and are easy to manage.

Let's Talk

Reader Interactions

Comments are closed. Continue the conversation with me on Twitter: @billerickson

Comments

  1. kevin says

    I was not aware I could create my own taxonomies…thanks for sharing that. I wonder: is there a downside to using multiple page templates? Does it, for example, impact loading speed?

  2. Stacy C says

    I realize this is an older post, but I wanted to say thank you! I was getting frustrated trying to figure out why my blog posts were not showing on the posts page. This solved my problem. I appreciate you sharing your knowledge.

  3. sourabh verma says

    Thanks a lot for the info, actually i am using Genesis on my blog and i was wondering with this issue since long. but your post gave me the solution.

  4. Thiago says

    Just came to thank you very much. Renaming home.php to front-page.php solved the loop problem (when I clicked page 2, 3, etc, it kept showing the same posts).

    Thanks a lot for helping a complete newbie.

  5. Anthony says

    Thank you Bill,

    Once again you provide the best and most well considered solution out there. Your simple home.php that enables page title & content to be inserted before the loop works great. However, Beaver Builder does not want to edit the page – would love if there was a clean way to hook into BB and remove that block.

    • Bill Erickson says

      I’ve never used Beaver Builder. I recommend you contact their support to see what they recommend.

  6. Beth Larson says

    After doing this, I an unable to disable the page title for the blog page. Your plugin works on everything else.

    • Bill Erickson says

      The Genesis Title Toggle plugin only works with singular content (pages, posts…) not with archive pages. You’ll need to modify your archive template if you want to make changes to the blog archive.

  7. Ana says

    Hello Bill,

    I am using a custom portfolio page template (https://wpsites.net/web-design/portfolio-page-template-for-genesis/) on my website to show off my portfolio items in a grid. Every post I publish is displayed in the grid as portfolio as you can see. But the problem is that now whenever I publish a post it shows up as portfolio, not on blog page. Is there any way to separate blog posts and portfolio items? I want to create a separate blog page and use that for non-portfolio posts.

    Waiting anxiously for your answer!

    Thanks in advance.

    • Bill Erickson says

      It looks like that tutorial is using the “Featured Posts” widget for the output. In Appearance > Widgets > Page – Portfolio, you can customize its settings. If you haven’t done so already, create a category called “portfolio”, put all the portfolio items in it, then in the widget settings limit the results to only the Portfolio category (first dropdown in the widget).

      But personally, I don’t think this is a good approach to implementing a portfolio. Portfolio items should be in a separate post type, not simply a category in your blog. Here’s a tutorial I wrote on adding a portfolio to a Genesis child theme.

  8. Amy Woods Butler says

    Any advice on setting up basically two blogs on the same site, one for written blog posts and one for podcast episodes? Apologies if you covered this already!

    • Bill Erickson says

      There’s three ways you could approach it:

      1. Create a “blog” category and “podcast” category, and use the category archive pages as the “blog”. You could also specify an actual blog page (mix of blog posts and podcasts), or not – by leaving the “Posts page” dropdown empty in Settings > Reading.

      2. Create a “podcast” category and exclude it from the main blog query (example). Use the podcast category archive as the “podcast blog page”.

      3. Create a custom post type called “podcast”. The main blog archive is used for all content in the ‘post’ content type, and the podcast CPT archive page is used for the podcast blog.

  9. Chris says

    I’m currently using the Geneisis grid loop to display my recent blog posts on my ‘front-page.php’ template. The problem when I switch my front page to ‘home’ is instead of displaying my recent posts it just displays the page title in the loop. Any suggestion on how to modify the loop on front-page.php to still show my recent posts in the grid loop?

    Thanks!

    • Bill Erickson says

      It sounds like a theme issue. Look at the home.php and front-page.php files in your theme and what’s in them.

    • Bill Erickson says

      There’s a few ways you could approach it.

      Option 1
      If you’re only going to have “blog” posts and “podcast” episodes, create each of those as a category and use the category archive as the hub for each. You don’t have to set any page as the main blog page unless you want a single archive that has both blog posts and podcast episodes.

      Option 2
      If you’d like to have multiple categories in the blog, create all those as categories, plus a podcast category. Use the main blog page for the blog and the podcast category archive for the podcast. You can customize the WordPress query on the main blog page to exclude the podcast category.

      Option 3
      If both the content creation process and the display will be totally different for podcasts, you might consider building them as a custom post type. The ‘post’ post type will be used for the blog, and the ‘podcast’ post type will be used for the podcasts.