Development, WordPress

Get the title for the posts page in WordPress

This little tidbit is for all you WordPress themers out there.  It is important that your theme displays the proper title on the page no matter what settings a user has on their site.  As you probably are already aware, a user can go to ‘Settings’ -> ‘Reading’ in the WordPress admin menu and change what pages are used for the front page and the posts page (aka blog page)…

Set Blog Page in WordPress

So in the example above, I want to set a static page as my homepage and delegate another page to host my blog (aka posts page).  So now that my posts page is no longer the front page, I want to display the page title that the user assigned to that page in my theme.  This helps add clarity for users and makes all of my pages have a more consistent appearance.  As an example, it could be that I am using the posts page for displaying news items and want to label my posts page ‘News’.

Rather than leaving it up to the user to go in and try to hack your theme to get the page title to appear, you decide you want to display this page title for them automatically.

WordPress provides you with the functionthe_title(), which works great inside the loop.  Problem is, you are using that inside the loop to display the title for all of your blog entries on the page and that won’t do you any good when trying to fetch the page title outside the loop.  If you try to use this function for the page title outside the loop, all you get is the title of the first post on the page.

So how do we fetch the page title for our posts page?

There are two ways to do it.  First is the easy way:


The only problem you might encounter with this method is that the function echoes our title immediately.  If you want to get the title as a variable for any reason, you would have to use output buffering to do it.

You can use the functionget_the_title() to get the title of a page as a variable just by providing the ID.  If you don’t provide an ID, then the function will try to fetch the ID for the current page.  Unfortunately, this function doesn’t detect the current page ID properly in our use case, which is why using functionthe_title() didn’t work for us earlier:  the_title() is just a wrapper function for get_the_title().

Luckily for us, WordPress does store the ID of the page you want to use for the posts page in the database.  So we can fetch the title as a variable, like this:

$our_title = get_the_title( get_option('page_for_posts', true) );

This may be more than you ever needed to know about fetching the title for an assigned posts page, but now you know! 😉


33 thoughts on “Get the title for the posts page in WordPress

  1. I am aware of getting the title of a specific page, searching for static posts page.found this page and used this function for my website.

  2. Mike M says:

    You can actually use single_post_title(); as a variable just by specifying false as the second parameter: $our_title = single_post_title(“”, false);

  3. stephen holdstock says:

    This is exactly what I’m looking for. Unfortunately, I’m a newb at proper coding…. any advice on where exactly to put that code?


  4. Umar Farooque says:

    WooWW, thanks alloottttttttt.

    You should have ended up this post by just giving this single_post_title(); function.

    • Basically, that theme is coded up not to have a title at all on the main blog page. So it isn’t a matter of it not working… it is just a matter of it not being coded to work that way.

  5. Susanne says:

    Oh, thank you for your kind and prompt reply 🙂
    Than I have to implement it in another way. Why should it be easy 😉

  6. Beth says:

    how do you get the content for a blog page (similarly to how you grabbed the title)?

    having trouble searching for that particular snippet!

Leave a Reply

Your email address will not be published. Required fields are marked *