You are on page 1of 10

Building Custom WordPress Theme

16/02/10 16:08

A wall of design ideas, web trends, and tutorials.

NOV

17

WordPress

Building Custom WordPress Theme


This is the Chapter II of the Complete WordPress Theme Guide series. This chapter will show you how to build a custom WordPress theme. Although the Codex site provides very good documentations on how to create a theme, but I find it too complicated for a beginner. In this tutorial, I will explain the basics of how WordPress theme works and show you how to convert a static HTML template into a theme. No PHP skill is required, but you need Photoshop and CSS skills to create your own design.

1. The Blog Frontend


Before you start, lets take a look at the WordPress default theme and see how it is structured. Take note of the elements (header, post title, search form, navigation, footer, etc.).

Default Frontpage (index.php)

Default Single (single.php)

http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/

Pagina 1 di 10

Building Custom WordPress Theme

16/02/10 16:08

2. Photoshop Mockups
Based on the information gathered from the default theme, design a Photoshop mockup of your blog. Here Im using GlossyBlue, one of my free WordPress themes, as an example. Download the demo.zip to see the Photoshop file.

3. HTML + CSS
After the PSD design is done, create a static HTML+CSS template of each page. You can use my GlossyBlue HTML files in the demo.zip to follow this tutorial. Extract the zip and take a look at the index.html,

single.html, and page.html . Later in the tutorial, I will use these HTML files and convert them into a theme.

Why Create a Static HTML File First?


Mainly because it will make the development process a lot easier. I usually create a HTML file for every template that I need, test it across all browsers, validate both HTML and CSS markups, then all I have to do is cut & paste the WordPress code. By doing so, I dont have to worry about HTML or CSS bugs during my theme making process.

4. How WordPress Theme Works


If you go the default theme folder (wp-content/themes/default ), you should see many PHP files (called template file) and one style.css file. When you are viewing the front page, WordPress actually uses several template files to generate the page (index.php << header.php, sidebar.php, and footer.php).

For more details, check out Site Architecture and Template Hierarchy at Codex.

http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/

Pagina 2 di 10

Building Custom WordPress Theme

16/02/10 16:08

5. Duplicate The Template Files


Copy the GlossyBlue HTML folder into the wp-content/themes folder. Then, go to the default theme folder, copy the comments.php and searchform.php file to the glossyblue folder.

6. Style.css
Go to the WordPress default theme folder, open the style.css file. Copy the commented code at the top and paste it to the GlossyBlue style.css file. Change the theme name and the author information as you desire.

7. Splitting The Files


Now you need to understand where to split the file into several files: header.php, sidebar.php, and

footer.php. The image below shows a simplified version of my index file and how the markups should split.

8. Header.php
Open the index.html file. Cut from the top to where the <!--/header --> ends, paste it in a new PHP file, and save the file as header.php.

http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/

Pagina 3 di 10

Building Custom WordPress Theme

16/02/10 16:08

Go to the default theme folder, open the header.php. Copy and replace the tags where it requires PHP code (Template Tag): <title> , <link> stylesheet, <h1>, and <div class=description> .

Navigation Menu (wp_list_pages)


Replace the <li> tags in the <ul id=nav> with
<?php wp_list_pages('sort_column=menu_order&depth=1&title_li=');?>

Reference: wp_list_pages.

9. Sidebar.php
Back to the index.html file, cut from where the <form id=searchform> start to the closing tag of
<div id=sidebar> and paste it in a new PHP file, save it as

sidebar.php.

Replace the <form id=searchform> wrap with


<?php include (TEMPLATEPATH . '/searchform.php'); ?> .

Replace the category <li> tags with <?php wp_list_categories('show_count=1&title_li='); ?> Replace the archive <li> tags with <?php wp_get_archives('type=monthly'); ?>

References: wp_list_categories and wp_get_archives.

10. Footer.php
Back to the index.html file, cut from the <div id=footer> tag to the end of </html> and paste it in a new PHP file, save it as footer.php.

http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/

Pagina 4 di 10

Building Custom WordPress Theme

16/02/10 16:08

Recent Posts
Here I used the query_post to display the 5 latest posts.

Recent Comments
Recent comments are generated by a plugin (included in the theme folder).

11. Index.php
Now in your index.html file, you should only have the <div id=content> wrap. Save the file as index.php . Insert the line: get_header , get_sidebar , and get_footer in the same order as your layout structure.

12. Understanding The Loop


The image below illustrates how The Loop works. The Loop is used to display blog posts and it also lets you control what to display. Basically, The Loop checks if there are posts in your blog, while there are posts, display it, if no post found, say "Not Found".
http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/ Pagina 5 di 10

Building Custom WordPress Theme

16/02/10 16:08

display it, if no post found, say "Not Found".

13. Copy The Loop


Go to the default theme folder, open the index.php file. Copy The Loop from the default index.php and paste it in between the <div id=content>..</div> . Then, replace the static text with the WordPress Template Tags: post date, title, category, comments, next and previous link.

14. Preview The Theme


Congrats! Youve done the front page (the main part of the theme). Now, login to your admin panel, go to the Design tab, you should see the GlossyBlue theme, activate it and go to the front page to preview the theme.

15. Single.php
Now, it is time to do the single.php template. If you want, you can go through the same process cut & paste from the default theme. But, I find it easier to use the index.php that you just created and save it as

single.php . Open the default theme single.php file and copy the Template Tags over. Then include the
comments_template . The image below highlights what Ive changed:

http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/

Pagina 6 di 10

Building Custom WordPress Theme

16/02/10 16:08

16. Page.php
With the single.php template you just created, save it as page.php. Remove the post date, comment form, next/previous link and thats it.. there goes your page.php template.

17. Delete The HTML Files


Delete all the HTML files in the glossyblue folder (we dont need them anymore). Technically, that is enough for a basic WordPress theme. You may notice there are more PHP files in the default theme. Well, you dont really need those files if you just want a basic theme. For example, if the search.php or 404.php is not present in the theme folder, WordPress will automatically use the index.php to render the page. Read the Template Hierarchy for more details.

18. WordPress Page Template


Ok, final example. I will show you how to use Page Template to create an archive page that will list all posts on your blog (good for sitemap). Copy the archives.php file from the default theme folder. Delete the unwanted code and you should have something like this:

Here Im using the query_post ( showposts=-1 means display all posts) to display a list of all posts.

http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/

Pagina 7 di 10

Building Custom WordPress Theme

16/02/10 16:08

Now, login to your admin panel, write a new page, title it Archives. On the Page Template dropdown, select Archives.

More Reading:
Check out a list of WordPress Plugins that you may find useful. For more advance theme coding, read my WordPress Theme Hacks.

Whats Next
In the next chapter, I will show you how to export your local WordPress to a web host and keep the local version for backup purpose.

Comments
Pages: 36 35 34 33 32 31 30 29 28 27 26 1 Show All

There are 353 comments (+Add)

353

iamoffended
February 16th, 2010 at 6:24 am

A quick note, its not super simple to create a static html and css from a psd if your not familiar with slicing and basic css coding. Does anyone have any good links to ruts for this process? Something for starting with a blank page, custom format for the layout?

352

keith
February 16th, 2010 at 3:13 am

cam you please help me with my sit .i want to improve the look.i an a novice
http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/ Pagina 8 di 10

Building Custom WordPress Theme

16/02/10 16:08

351

crewof1
February 14th, 2010 at 2:21 pm

Im also trying to figure out how to make a 3-column layout, like the recent comment below.

350

iamoffended
February 14th, 2010 at 6:29 am

Thanks, this is the most helpful tut Ive found. How would you name the sidebar if you wanted a 3 column layeout? I.e. Sidebar left, index, sidebar right? Header, footer? Thanks again for this

349

Will Hull
February 5th, 2010 at 12:15 pm

Thank you so much for this tutorial. It helped break things down so much more than much of what is out there. I just completed coding for my blog design. I invite you to check it out. Its all thanks to you. http://willhull.com/blog Thank you, thank you, thank you!

348

Rob
February 4th, 2010 at 3:20 pm

Hey great tut, one issue Im having though and Im hoping you can shed some light. Ive developed the html and css and it works flawlessly as it is. One I start breaking it apart (header, nav, sidebar, footer, etc) it breaks. It appears that the isnt doing what it needs to do. Ive read around and Im not sure if I need to define that in any way to look for header.php, footer.php, etc. But as it is Im stuck and frustrated. Any help would be awesome! Thanks and great work!

347

Mina
February 4th, 2010 at 6:48 am

i like lay out of this site

346

seocontentgirl
February 3rd, 2010 at 6:32 pm

Now thats what I am talking about, this is one of the best tutorials on learning to build a custom wordpress theme yet! Great work.

345

slit
February 1st, 2010 at 5:14 am

Nice Tutorial. Is it possible to get it in grman? Slit

344

DreamHouse
January 31st, 2010 at 2:39 pm

Wow! you made it easier. This is a really big help for beginners like me. thanks

Pages: 36 35 34 33 32 31 30 29 28 27 26 1 Show All

http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/

Pagina 9 di 10

Building Custom WordPress Theme

16/02/10 16:08

ABOUT
Web Designer Wall is all about design, ideas, web trends, and tutorials. It is designed and maintained by Nick La, who also runs N.Design Studio, IconDock, and Best Web Gallery.
Web Designer Wall 2010 .

http://www.webdesignerwall.com/tutorials/building-custom-wordpress-theme/

Pagina 10 di 10

You might also like