In a default installation of WordPress, the Front Page will display a list of all published posts sorted in descending order by “Post Date”. This works great if you want your WordPress installation to function as a “blog”, but what do you do if you want your installation to function as a “website” with a “blog” inside it? Fortunately, this functionality is built into WordPress and only takes a few minutes to get up and running. Please read below for instructions. This tutorial assumes that you are using a fresh installation of WordPress (installed at “web root”) with the default theme. Don’t fret if this is not your current situation, the instruction below will work on any WordPress blog… you just might need to do a bit of work depending on the theme you are using :)

Create Your Front Page

Log into your Administration Panels and from the left-hand sidebar click Pages -> Add New. Enter a title and content and click the “Publish” button. Appropriate titles for this page can be “Home”, “Welcome”, “Index”, anything that you like really. For the sake of this tutorial, let’s say you called your Front page “Welcome”.

Create Your Posts Page

Just like the previous step: from the left-hand sidebar click Pages -> Add New and create a page that will serve as your site’s “Blog” page. All we really need to do here is add a title and click the “Publish” button. Appropriate titles for this page can be “News”, “Blog”, “Posts”, anything that makes sense to you. For the sake of this tutorial, let’s say you called your Posts page “blog”.

Update Your Settings

From the left-hand sidebar navigate to: Settings -> Reading. The first from element on this page is “Front Page Displays”. In a default install, the “Your Latest Posts” radio button will be checked. For our purposes, we will select “A static page”. Right below these two radio button fields, There are two dropdown boxes: “Front page” and “Posts page”. We want to select the pages that we have just created for each dropdown box. Please see the image below for clarification. Oh yeah, don’t forget to press the “Save Changes” button at the bottom of the page!

reading-settings

Check-out Your Site

Navigate to your live WordPress installation to see your changes in action. You should be able to visit http://example.com/ and see your “Front Page” and visit http://example.com/blog/ to see your “Posts Page”.

Help, It Didn’t Work For Me!!!!

Sorry ’bout that:) Lets take a look under the hood of your theme and see if there is something blocking us. Navigate to your installation’s current theme’s directory. Something like /wp-content/themes/my-current-theme/ If you see a home.php file in this directory, then the above process will not work. We will need to turn this home.php file into a Page Template, assign this new Page Template to our “Welcome” page and finally delete home.php

Creating the Page Template

This is a lot easier than it sounds, but before you begin, please back up your theme’s files!!!! First, open a new file in a text-editor and save it to your theme’s folder. I like to name all my template files with a prefix of “t-”. For this example, I would name this new file “t-homepage.php”. Next thing to do is to add a few lines at the top of this file so that WordPress will recognize it as a Page Template. Add the following text and save your document.

<?php
/*
Template Name: Custom Homepage
*/
?>

Add the Contents of home.php to Our Custom Page Template

Now we will copy all of the code from home.php and paste them into t-homepage.php under the code we just added and save your t-homepage.php. It is now time to delete home.php from our theme’s directory on our live site. We will also need to upload t-homepage.php to our server.

Why delete this file? Well, basicly when this file is present in an WordPress Theme, it will be used to create the Front Page, basically, it will override all of the steps we have taken above.

Assign the Custom Page Template to Our Front Page

From the left-hand sidebar click Pages -> Edit and select your Front Page from the list. On the right-hand sidebar, you will see a section titled “Attributes” (It’s the second box from the top) under “Template” choose the “Custom Homepage” option and click the “Update Page” button.

In Conclusion

Well, I hope that this tutorial helps you to gain better understanding of how your WordPress Blog works. Please let me know if this this was useful to you by posting a comment below! Thanks for reading!

Related Resources

10 Responses to “WordPress: How to create a separate page for your blog posts while using a static homepage.”

  1. [...] Michael Fields ยป WordPress: How to create a separate page for your … [...]

  2. scribbler says:

    hi, Thanks many for the post :) I’ve been searching around for this for quite a long time

  3. Nickie says:

    Hi, my template/theme already came with a homepage so now I have 2 pages named ‘home’? How do I get rid of the home page that came with the template so it just leaves me with the home page I’ve created??? Thanks.

    Nickie x

  4. Matt says:

    Wow thanks so much! Been looking for this for ages, and yet it’s always been there hiding! Champion post

  5. Hi, nice tip thanks, i’ll use it on my site.

  6. jo says:

    Hi, thanks for the tip, you are the life saver:)

  7. mark says:

    Thank you for the post…

    I got the same result by simply creating a new page… I called it Home… then under Reading, I changed Post Page to Home.

  8. Paul says:

    Thanks for the tip, so much easier searching Google than skimming through the Wordpress documentation.

  9. Robin says:

    I am having a similar problem as Nickie. I’m working on a site for a client (melissacoeceremonies.com) and want a home page called either “home” or “welcome”. When I create it as “home” it shows up twice, and when I create it as “welcome”, both “home” (the default landing page) and “welcome” point to the same place. I don’t have a file called “home”, though.. which is why that part of the directions don’t make much sense to me.

    • Your theme is most likely using the wp_page_menu() function to generate your navigation which adds the link for Home and then lists all other pages, you can remove Welcome by adding the exclude parameter like so:

      wp_page_menu( 'exclude=9' );

      Be sure to change 9 to the $post->ID of the page titled Welcome.

Leave a Reply

You may use the following html: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>