Most simple WordPress templates/themes generally employ a single sidebar. But, in keeping with WordPress’ open architecture, you can easily add a second (or 3rd or 4th) sidebar to your site’s theme. And, you aren’t restricted to using your sidebar in the typical sidebar area–you can put your new sidebar in a header, a footer, or any other area in your template. Additional sidebars let you place any WordPress Widget (such as Recent Posts, Pages, Links/Blogroll, Calendar, Tag Cloud, as well as any custom widgets) into new areas of your WordPress template. This technique is especially powerful when combined with custom WordPress page templates–with additional sidebars, we can have custom sidebars for each of our custom page templates. This is the approach we’ll teach you in this tutorial.
Laying the Groundwork for Your New Sidebar
So what we’ll do in this tutorial is to add a second sidebar to one of our custom template pages in our WordPress theme. We have a custom homepage in our template where we want to include a robust call to action to our website visitors rather than a Category list which is more appropriate for blog readers. The screenshot below shows the default “Sidebar 1″ sidebar from our simple template, and we’ll add a second sidebar called “Homepage Sidebar”.

Let’s first take a 10,000 foot view, we are going to employ the following steps to add our sidebar:
- We are going to register our sidebar within the template by making an entry in the template’s functions.php file.
- We are going to create a separate, custom sidebar file called sidebar-homepage.php.
- We are going to include a reference to our custom sidebar-homepage.php file in our custom page template.
That’s it! With these three steps, we’ll have a 2nd sidebar that will display on our custom homepage. With the same technique, we could create additional sidebar areas, the steps would be the same.

Step 1: Registering the Additional Sidebar Within the WordPress Template
First step: we start by registering our sidebar within the template’s functions.php file. 99% of all WordPress templates/themes have a functions.php file. If your theme doesn’t have one, simply create a file in a text editor (we like Notepad++ in the Windows environment and TextMate in the Apple environment). If you don’t know how to find your theme files, you’ll find them in your web host in the following directory: www.yoursite.com/wp-content/themes/yourtheme/.
You’ll want to begin by finding any existing “register_sidebar” entries in your functions.php file. Ours had the following existing sidebar definition for our single default sidebar:
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>',
));
}
To register our second sidebar, we simply add the following code to the functions.php file:
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'name' => 'Homepage Sidebar',
'id' => 'homepage-sidebar',
'description' => 'Appears as the sidebar on the custom homepage',
'before_widget' => '<div style="height: 280px"></div><li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>',
));
}
So what did we just do?
- We told our WordPress installation, “we are adding a second sidebar area that we’ll use in our theme”
- The sidebar’s name is “Homepage Sidebar”
- The ID of the sidebar (we’ll refer to that ID later) is “homepage-sidebar”; you can choose “footer-sidebar”, “second-sidebar” or anything you want
- We added the description “Appears as the sidebar on the custom homepage” that will display just under the sidebar’s title.
If you upload your new functions.php file to your WordPress installation, you should see your new sidebar if you browse from your WordPress dashboard to Appearance, then Widgets. It should look like the following picture. We’ve already added a Text Widget with the title “Contact Us” to ours, but yours will be empty when you first look at it. But, all we have done is create the sidebar so far; we haven’t yet taken the steps to display the sidebar anywhere in our theme, that will come in the next steps.

If you see your new sidebar in the Widgets area of your WordPress Dashboard, you are ready to move on to the next step.
Step 2: Create an Additional Sidebar File
WordPress themes use a default file called sidebar.php to display sidebars on pages and posts. But, our goal is to create a second sidebar, we’ll do that with a separate file called sidebar-homepage.php.
Again, we’ll open our text editor and create a file and paste in the following code and insert the ID of your new sidebar within the “dynamic_sidebar()” declaration like so:
<div id="sidebar">
<ul>
<?php
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('homepage-sidebar') ) :
endif; ?>
</ul>
</div>
Now, we have to note that our example sidebar file is highly simplified. Most sidebar files have more code–this extra code displays core navigation in the event the sidebar does not have any widgets installed in it–but for the purposes of this tutorial, we have to simplify it. As an alternative, you can simply copy your sidebar.php file and rename it. Don’t forget to include your sidebar ID within the dynamic_sidebar declaration (shown in red in the code example above)–that sidebar ID tells WordPress which sidebar (which we registered in Step 1) to display.
Step 3: Call the Additional Sidebar from Your Theme Files
We’re almost there. Now, all we need to do is call our new sidebar file, sidebar-homepage.php from our template files–keep in mind that our file name must follow this construct: sidebar-_______.php; we’ll see why in a moment. In our example, we’ll call our sidebar file from a custom template page–but you can call your new sidebar from a footer file, header file, or any theme file that displays on your WordPress site.
The function in WordPress that calls sidebars is get_sidebar(). When get_sidebar() is used with no information within the parenthesis, WordPress grabs the default sidebar.php file. But we want to grab our sidebar-homepage.php file, so we put “homepage” in single quotes within the get_sidebar parentheses. This tells WordPress to grab a file called sidebar-homepage.php . The code we want to insert in our template file is the following:
<?php get_sidebar('homepage'); ?>
What we’ve told WordPress to do is the following: we want to grab a sidebar file, but not the default sidebar, we want a file called sidebar-homepage.php. With this string of code, we’ve successfully grabbed our custom sidebar file.
Our New Sidebar
If you’ve coded your additional sidebar correctly, you can drag Widgets from the WordPress dashboard to your new sidebar and you’ll see the widgets displayed on your WordPress site. Here’s our new sidebar displaying on our homepage, while we display our default sidebar on interior pages and blog posts:

Other Approaches to Adding Sidebars
Our method is one of many, there are more elegant ways of accomplishing the same result without creating separate template files, but the method outlined here is simple and reliable. Please comment below if you have questions or run into trouble.



very helpful tutorial!!! thank you so much
Michael good work……!!!!!
Thanks! Didn’t know one could do it that way.
It was great tutorial. Thank you so much. But in my website, it shows a dot (.) behind the sidebar. I need to remove that but don’t know how to to that. could you please help to solve it?
What is the website? Email it to me at michael[at]tastyplacement.com
hi there,
this is working if i stick to adding one more sidebar…as soon as i add an array of sidebars (to get more than one in the footer area) I am seeing the widgets in the WP cms widget area, i can add stuff to it, it is also outputting the widgets in the source code, BUT the content within the widgets is missing – it isn’t being output anywhere…Any ideas would be highly appreciated.
From what I understand, this will only take the place of the existing sidebar so you can swop it out on a per page basis. I have a theme with template options: “Full Page”, “Left Sidebar”, “Right Sidebar”. I need to have a “Left and Right” sidebar on the same page. Unless I have misunderstood how this method works, I don’t think it will do that. Or, have I got it wrong?
No, with this method you can add two sidebars to the same page…in your template file, just call both sidebars:
< ?php get_sidebar('left'); ?>
< ?php get_sidebar('right'); ?>
Great tutorial but my new sidebar appears disordered in the botton of my site. do i have to do something in the css styles?
Every template is different, so yes, you might need to make some css adjustments. It’s hard for me to say exactly without studying the template. If you are stuck, you can probably call in a coder for a quick job like that for like 20 bucks on Craigslist or even Elance.
It’s helped me lot… thank you so much……
actually i searched here and there for a way out to create a sidebar just beneath the category nav of my theme. your article gave me the basic idea and i did it on my own accord. thanks to pave me the path.
Thanks for this badass tutorial! Incredible walk through and I love your “10,000 foot view.” It really helped add four ‘sidebars’ into my footer area.
Nice tutorial!
This is absolutely one of the best clearly stated tutorials I’ve come across, except for one issue…and maybe I just don’t get it…
Appearance==>Editor ==> list of templates on right of page. I see all the templates listed on the right including sidebar.php. Exactly how do I find the folder in which sidebar.php file exists. That is, where do I actually re-create and rename the second (re-named) php file.
Thanks in advance!
Am I correct in the answer to my own question is: Go to CPanel??? wp-content??
Thx
Your template files are found here: yoursite.com/wp-content/themes/YOURTHEME/sidebar.php….for example, our theme stylesheet is in the template folder here: http://www.tastyplacement.com/wp-content/themes/tastykita-child/style.css
i want to add a extra sidebar on the left i have just one on the right how i can do that
That’s a bit more work because you need to create a css-based
Well written tutorial. That helped a bunch. Very generous friendo!
My peeps live in Fredericksburg… if I gen up some Hill Country clients, I’ll point them to ya!
Great tutorial! Is there a way to add a sidebar to a one column theme?
Wise guy answer: replace the theme. Well, that’s quite a bit of surgery, I think before I did that I would consider upgrading the template to a shiny new one, seriously.
Awesome tutorial… i love it… how do i call this sidebar so it only appears on a certain category and not the homepage? Thanks … Great post
That’s more complicated and you need to use a plug called “Custom Post Template” which you can find on WordPress.org.
Brilliant tutorial that’s absolutely saved the day
Ah, but what about for a child theme? I think there’s a lot more involved, am I right? In order to add a sidebar, I have to unregister the parent themes? Can you help me out?
Not to worry, I found the solution!
After trying several tuts i ended up here, thanks a lot bud..
Such a great tut, thank you so much!
Mine worked nearly perfectly… apart from the final step, getting the sidebar to show up!
My site: http://catillest.com/shop/bear-style-t-shirt/ The standard sidebar is still showing, even though this page is set to product template and the product-sidebar is called within that… I’m not sure what I’m missing.
any ideas anyone? Any help massively appreciated!
Agh! Scrap that, all in the naming ‘sidebar-xxxx.php’
Really very helpful, thanks.
Thank you very much for your great tutorial !
Thnx sir
I realy like it
Thanks for writing this up. Very helpful when I had to do some wordpress template building on the fly.
Hello, I’d need help, how to add another sidebar in the theme OpenDoor. I need another sidebar to the right. This theme http://themeforest.net/item/opendoor-responsive-real-estate-and-car-dealership/full_screen_preview/3417587
Hi all,
Going crazy here trying to get a sidebar to show up.
I created a custom page template to have a blog page and modified the home page to stop posts showing up. Thats all working nicely.
I want to have the blog categories show on the blog page so was planning to put the categories widget on a sidebar created using widgets on pages plugin. Completed the steps for that but no sidebar. Completed the steps here and no sidebar. I dont have the layout options available when creating a page and cant figure out why, is this because of the theme im using?
I tried using another plugin Page Columnist to create columns but still no sidebar
A very concise and well-written tutorial. I hope you do more.