Adding Extra Sidebar to your Wordpress Theme
You like a Wordpress theme on the Internet but Oh!… What’s this?? The theme has only one sidebar! You need more than one and are on the verge of switching to some other theme with more sidebars. But wait!! Let me teach you how to add an extra sidebar or sidebars to your favorite theme. People who know PHP will find it easy to follow but even novices can easily do it using the code that I have provided in this tutorial. I am assuming that you already know HTML and a bit of CSS.
To begin the tutorial, extract your theme into a folder and open it to see all the files. If your theme has only one sidebar, then most probably you will NOT find a file called functions.php in your theme folder. In that case you will have to create this file yourself. Just open notepad or any other code editor to start a new file. Put this code into that file :-
<?php
if ( function_exists('register_sidebars') )
register_sidebars(2);
?>
Save the file as functions.php and put it in your theme folder. This piece of code actually tells Wordpress to register two sidebars for you (See register_sidebars(2) in the code). If your theme has more than one sidebar, you will find the functions.php file already present in your theme folder. You just have to edit the number to your requirement and save the file. You can increase this number if you want more sidebars and if your theme’s layout can accommodate it. Now, when you go to your Wordpress admin section and browse to the widgets under the menu item called presentation, you will see two sidebars listed there. You can drag your widget items into any of the sidebars.
Now comes the part where we actually build the sidebars. If your theme has only one sidebar, try to locate a file called sidebar.php in your theme folder. In this example, where we are trying to modify the theme for two sidebars, let’s rename sidebar.php to sidebar1.php and make a new blank file called sidebar2.php. Put this code into sidebar2.php and save the file :-
<div>
<ul>
<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar(2) ) : else : ?>
<?php endif; ?>
</ul>
</div>
So, we have the two sidebars ready but they have not been placed in the index.php file yet. Both these sidebars need to be called from the index.php file in order to include them in your theme. Just open the index.php file from your theme folder and locate the code that calls your sidebar file (sidebar.php earlier). It should look something like :-
<?php include (TEMPLATEPATH . '/sidebar.php'); ?>
Edit this code and change the words sidebar.php to sidebar1.php.
This takes care of the first sidebar. Now take a look at the index.php file carefully and find a suitable place to insert the second sidebar. This might involve modifying your layout or adding new divs. Once you find a suitable place, place the following code there :-
<?php include (TEMPLATEPATH . '/sidebar2.php'); ?>
Save the index.php file and now preview your theme. You will see all the widgets that you placed in both your sidebars appearing on your website. If you have not placed any widgets yet, you will not see any change. There might be alignment errors but you will have to fix them yourself. You can add more sidebars in a similar way to your Wordpress theme. I hope this tutorial helps some of you.



































@canute:-
i just solve it
nice tutorial
thanks
my theme has already the function.php
i open it and show this
if ( function_exists(‘register_sidebar’) ) {
register_sidebar(array(
‘before_widget’ => ”,
‘after_widget’ => ”,
‘before_title’ => ”,
‘after_title’ => ”,
));
}
the problem is
i cant add another one
or just cant figure out
if anybody knows how i can fix it
i apreciate it
Thanks for the article. Worked great first time. I was able to add a second widgetized sidebar to my 2 column theme, and make it 3 columns. Your instructions were very easy to follow, accurate and detailed. I thank you sir!
For the doubters here check the results:
http://www.devision.com.au/blog/
Certainly a very helpful guide. Thank you!
@Dan:-
Hello,
I do not see a reply to this particular question. I have the same problem. My index.php does not contain include lines instead it contains a call get_sidebar(). I do not know how to change this to get a second sidebar. I have made the changes to functions.php and made the files sidebar1.php and sidebar2.php so I do see it in worpress editor but it does not appear on page as I cannot firgure out what to use instead of get_sidebar. Would really appreciate the help.
@Jai
I sent you an email too..but for others I have seen several questions of how to get the sidebar on the far right side, if you already have the original sidebar on the left. I can get the new sidebar to appear but it doesnt seem to matter where I put the code in the index.php file it still ends up either below the posts or on top of the posting area. How do I get it to mimic the left sidebar on the right? Any ideas anyone?
i was confused with the code as i was using 2 lines in functions.php
if (function_exists(‘register_sidebars’)) register_sidebars(1);
if (function_exists(‘register_sidebars’)) register_sidebars(2);
my bad as it screwed my head for 30 min, but its ok now, i removed the first line as i have to use only one single code
if (function_exists(‘register_sidebars’)) register_sidebars(2);
just have to increase the number for more sidebars.
Thanks alot.
@ayahshiva:-
Because you reeeealy like the Theme apart from the fact it has only one sidebar?!
Nice Tutorial! Keep it up!