Let’s face it, not all WordPress themes are coded perfectly (*cough* not even mine *cough*). Theme designers may forget to add little bits of code that may cause undue stress for the theme user.

Poorly coded themes may cause feed readers to not recognize WordPress’ RSS/Atom feeds. They may cause certain plugins to be rendered useless. They can even cause an entire site to break, likely forcing the WordPress user to switch back to an older theme.

In this tutorial I’ll go over 5 things some theme users and designers alike can do to fix common WordPress theme related issues.

Header and Footer hooks

These two quick bits of code go in the header and footer of your theme. While these aren’t absolutely essential, several well known WordPress plugins simply won’t work at all without them. They’re so easy to add in a theme, why not?

<?php wp_head(); ?>
This code should be placed right before the closing </head> tag. It is used by plugins such as ShareThis to insert things like CSS stylesheets or javascript code directly in your header. Let’s take a look at the code in header.php of the default WordPress theme.

The wp_head() hook

As you can see, it is placed directly before the </head> tag.

<?php wp_footer(); ?>
Although not as widely used among plugins as <?php wp_head(); ?>, this has a similar role, except instead for the header - it’s for the footer. This is usually placed directly before the </body> tag in your themes.

The wp_footer() hook

Very similar to wp_head() - as shown above.

Links to your feeds

Without these, some feed readers may have trouble recognizing the feed available on your WordPress site. The following codes should be in your header somewhere, between the <head> tags. You can pick and choose which feeds you want supported. Most prefer the RSS 2, but it won’t hurt to add the others.

RSS 2.0

<link rel="alternate" type="application/rss xml" title="Subscribe to <?php bloginfo('name'); ?>" href="<?php bloginfo('rss2_url'); ?>" />

RSS 0.92

<link rel="alternate" type="application/rss xml" title="Subscribe to <?php bloginfo('name'); ?>" href="<?php bloginfo('rss_url'); ?>" />

Atom

<link rel="alternate" type="application/rss xml" title="Subscribe to <?php bloginfo('name'); ?>" href=" <?php bloginfo('atom_url'); ?>" />

You can pick and choose which ones you want. The default WordPress theme just has the RSS 2, so you should probably have at least that one.

Pingback URL

To take advantage of WordPress’ built-in “pinging” function, you’ll need to have the following line within your <head> tags.

<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />

This is what lets you send and receive pingbacks from other blogs who may be linking to your content.

Language Attributes, HTML type, and Charset

I felt this could all fall under one heading, since all of these are located in the same area near the top of your template, in the header. This is useful if your site is in another language and you’re stuck with the English settings.

Language Attributes, HTML Type, Charset

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />

This most likely can be copy and pasted over what you currently have at the top of your header.php file, unless you have another XHTML type (which is currently Transitional).

Using the current year

We’ll save the easiest for last. I know this is something you would only have to update once a year, but why worry when you can let WordPress handle it for you? Simply replace the year (2008 for example) with the following code:

<?php echo date('Y');?>

So when 2009 comes around, you won’t have anything to worry about.

Conclusion

That’s about it. Hope this tutorial was of use to you. It’s definitely a good idea to make sure your theme has all of the above implemented. These 5 quick things will take a few minutes to add if not present already. The header and footer hooks are especially important for plugin compatibility. Feel free to comment and share if you liked it. Looking forward to hearing your feedback.

Subscribe to RSS

By: Leland on Apr. 22

Bookmark and Share

7 Comments »

Comment by SEO Diva Subscribed to comments via email
2008-04-22 13:28:12

Great post - I didn’t know any of this. I’m off to check on my blog now.

 
Comment by Vivevtvivas Subscribed to comments via email
2008-04-22 15:06:35

I’m always looking for any tips I can find on how to improve my templates and blog. I appreciate the time you took to write this! Good stuff, I’m going to link to you in my blog shortly.

Thanks,

Vivevtvivas

 
Comment by Leland
2008-04-22 15:09:17

@SEO Diva: No problem!

@Vivevtvivas: Thanks, that would be greatly appreciated. :)

 
Comment by Vivevtvivas Subscribed to comments via email
2008-04-22 15:31:03

Hey, we all have to stick together! Here is the link to the article that I wrote: Link

 
Comment by Deborah Subscribed to comments via email
2008-04-30 19:53:51

Thanks for the great tips. I had added the wp_head in the header, but didn’t know about the wp_footer. There’s a small typo in your Atom feed, an extra space after the href=”.

 
Name (required)
E-mail (required - never shown publicly)
URI
Subscribe to comments via email
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.

Trackback responses to this post

Recent Comments

  • Anto: Hello. Thanks, you’ve got my contact details. Get in touch with me if your wanting something in your own...
  • Sonny: Hey Anto, I love this design, good work that I paid for link removal :) Anyways, how can one contact you to do...
  • Leland: @axelk: As in picture uploads? Not sure about that, although you could set up the form to allow users to send...
  • axelk: thank you for the reply. can Contact 7 be used to submit pictures as well?
  • Leland: @axelk: I think that’s what the Contact Form 7 is for. Although if you wanted to allow users to submit...

About The Author

Welcome to Theme Lab. My name is Leland, and I run the place. I write all the tutorials and code all the themes you see here on the site.

For more information about me, feel free to read the about page. If you want to drop me a message, feel free to contact me.

Interested in advertising on Theme Lab? We have advertising available at very reasonable rates. Head on over to the advertising page for further details.

Please read our Privacy Policy and Terms of Service in regards to theme usage.

© 2009 - Theme Lab - Powered by WordPress