Submitting a Theme to the WordPress Free Theme Directory [Tips and How-to]

wordpress text logo Submitting a Theme to the WordPress Free Theme Directory [Tips and How to]The advantages of having one of your themes featured in the WordPress free theme directory are endless. Not only do you get valuable backlinks from WordPress.org, but you also receive:

  • Backlinks from an enormous amount of domains that use your theme. Be sure to include a link to your website in the footer that says something like “Theme by sitename.com” and most sites will not remove it. The links on the theme are all sitewide and, although they pass off very little PR value (they are at the bottom of every page), they significantly increase the domain diversity factor of total backlinks to your site.
  • Exposure to people that use your theme. People who use your theme will sometimes frequent the theme homepage and end up checking out the rest of your site as well. These people have the potential to become subscribers.
  • Exposure to people that click the link in the footer of sites that your theme is installed on. The links not only provide valuable PR juice (for better SERP) but they also supply a steady flow of traffic from curious visitors.

Sponsor a Theme if you Can’t Code

The benefits of submitting a theme and having it downloaded by thousands of people per day are so tremendous that many people sponsor themes or pay to have a backlink inserted at the footer of themes submitted to the directory. At one point theme sponsors took it to the next level and began inserting full-fledged advertisements and obtrusive links in their free themes.

Because many users took advantage of the system, As of July 10, 2007, WordPress no longer allows sponsored themes. Matt Mullenweg proposed the idea of disallowing sponsored themes to the WordPress community because it became “confusing for users.”

However, themes can still feature a non-obtrusive attribution link in the footer. If the private label rights of a theme is purchased people can still, in an indirect way, sponsor themes by pointing the attribution link to their site.

Note: People who intend to purchase sponsored themes should make sure that the theme developer is willing to walk them through the submission process. 9 out of 10 times, a theme submitted to the WordPress free theme directory will be rejected because of improper adherence to the WordPress theme development checklist (more on that below). The theme can be re-submitted but the developer needs to be around to make the changes.

The Submission Process

How to Submit a Theme to the WordPress Free Theme Directory

To submit a theme to the directory, simply login to your WordPress.org account, click on the “Extend” tab, click on “Themes” in the left-hand sidebar, click on “Theme Authors” (a sub-menu item of “Themes), then click the browse button and navigate to the zip file on your computer that contains the theme you want to upload.

After you click “upload,” a special server script will examine your theme to make sure it adheres to the guidelines established in the development checklist (more on that below). This script will check obvious things like:

  • Are you including all the necessary PHP template tags and functions for WordPress to work properly?
  • Does your theme contain all the necessary files (header.php, index.php, footer.php, etc)?
  • Has the theme been submitted before? If so, is this theme a newer version of an already submitted theme indicated in style.css?
  • Does the zip file folder that contains the theme also include unnecessary system files like thumb.db?

Note: if your theme is rejected because of this, you should, in windows, check the “view hidden system files” under folder options and then delete all thumb.db files in the folder (and sub-folders) before zipping the folder up and re-submitting.

After the server script gives the okay, your theme will then be checked (roughly within a week) by a team of WordPress developers that manages the free theme directory. These developers are highly scrupulous and will not include your theme in the free theme directory if it does not adhere to the guidelines. They will notify you by email if the theme was rejected and (although not communicated explicitly) give you the opportunity to re-submit it after improvements have been made.

I have found that the best way to re-submit a theme is to re-upload the theme as a newer version (you can identify which version number your theme is in style.css and the script will never allow you to upload the same version twice) and then email themes@wordpress.org, making the team aware of the re-submission. Be sure to specify the theme name and new version number.

Getting Your Theme Accepted Without All the Extra Hassle

It’s great that WordPress provides an up-to-date, comprehensive checklist that covers absolutely everything your theme needs in order to be accepted. However, going through each and every individual item on the checklist can be a real bore, not to mention unbelievably time consuming. It is sometimes unnecessary for developers to go through the checklist item-by-item if they know their theme is at least suited with the basics. That’s why I’ve compiled a list of commonly missed checklist items.

My Miniaturized WordPress Theme Development Checklist

The list is invaluable to me because it expedites the theme approval process. Rather than going through the entire development checklist, I do the best I can developing the theme, then get it approved by the server script (the bot that checks your theme for obvious errors), then go through my own checklist (below). After I’ve done all that, my theme is often accepted right off the bat or, if not, the changes necessary for inclusion are minor.

Items on this list are all things my theme submissions have been rejected for:

  • Threaded comment support. Threaded comments are comments that are made in reply to other comments and have different (usually indented) styling from normal comments. The WordPress CMS support for threaded comments has been around since version 2.7 and all themes in the directory are required to have the feature. Implementing threaded comment support is as easy as copy and pasting one line of PHP into your theme’s comment.php file and then styling different levels of comments using the automatically generated depth class (depth-1, depth-2, depth-3, etc) as selectors. I will most likely write a guide on this tomorrow because I haven’t found any guide on the web that spells that out.

    Note: the depth classes may not be generated automatically if your comment.php file is not coded correctly (use the default theme’s comment.php as a template to be safe).

  • Comment reply must have form open next to comment like on default theme. Although I’m sure this required feature is hidden somewhere deep in the recesses of the development checklist, I have had themes rejected multiple times on account of this. When you click to reply to a comment (with threaded theme support enabled and configured correctly), the form that is used to submit the text of the comment must appear beside the comment being replied to (rather than below the last comment). The default theme uses a simple function to make this happen and I recommend transplanting it from the default theme’s comment.php. As a matter of fact, I would recommend transplanting all of the code in the default theme’s comment.php, that way enabling threaded comments really is as easy as inserting one line of PHP and styling the depth classes appropriately (see above).
  • Default sidebar widgets. Most WordPress theme developers know that a widgetized sidebar is a necessary feature of any WordPress theme. However, most don’t know that in order for the theme to be included in the free theme directory it must have default content in the sidebar (content that appears there without there being any widgets placed in the WP admin control panel). To have default content appear when no widgets are occupying the sidebar (or any other widgetized area of the theme), you must write the markup manually inside respective if statements (the ones that look like <?php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar() ) : ?>) which are all located in you theme’s template files (most themes only have sidebar.php widgetized).
  • Styling for blockquotes in post. This one is pretty self-explanatory. You just need to style the blockquote HTML element in CSS with a suitable indent space and image or color background (it must look different than normal paragraph text).
  • Styling for blockquotes in comments. Not only is it necessary to have styling for blockquotes (the <blockquote> tag in HTML) in the body of posts for a WordPress theme, but also for comments. Proper styling can be achieved using location specific styling. Example: in style.css, insert a class called “div.comment blockquote” and set the desired properties. That should work if you are using the proper template tags in comment.php.
  • Screenshot. A screenshot of the actual theme itself must be included in the zip file that contains the theme files. Simply take a live shot of your theme, re-size it in Photoshop (or whatever program you use) to something less than or equal to 300 x 225 and name it screenshot.png (no other file type can be used). The screenshot image will appear in the free theme directory (if it is ever included) and will also appear in the WordPress admin control panel on the Themes page if it is installed.
  • Licensing info. According to a WordPress.org blog post which references a letter from the Software Freedom Law Center, all PHP used in WordPress themes are derivative works of the WordPress Content Management System. This makes total and complete sense if you understand what the WordPress PHP template tags and functions are and if you read the letter. With that being understood, it is no surprise that the WordPress development team chooses to only include 100% GPL licensed themes. That means that not only the PHP but the images and CSS must be GPL. To comply with this standard, just include a license.txt file like the one I used in The Dirty Blue Theme, which contains the following text:

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along with this program.  If not, see http://www.gnu.org/licenses/.

  • Errors for missing images. Make sure that your theme uses the proper WordPress functions to retrieve paths for template images (things like button and backround images). You want to avoid hard-coding paths because the paths may be different if the theme folder is renamed or other variables are changed. For example, if I wanted to insert an image retrieved from a location inside a folder called “images” contained in the theme’s root folder, I would use <?php bloginfo(‘template_directory’); ?> rather than the actual name of the theme folder; so the proper path would end up looking like <?php bloginfo(‘template_directory’); ?>/images/image.png.
  • Non hard-coded header or logo images. This is probably a mistake many first-time theme submitters end up making. You cannot insert an image logo in your theme and expect anyone that uses your theme to have the programming expertise required to replace the default image logo with their own. If you want image logo capabilities in your theme, you must code a page that will show up in WP admin control panel and allow the user to change the image by uploading their own or specifying a URL. If you just want the theme to have a simple text title, use a combination of the get_option(‘home’) and the bloginfo(‘name’) function (e.g.: <a href=”<?php echo get_option(‘home’); ?>”><?php echo bloginfo(‘name’); ?></a>). Then the theme user will be able to change the title of the blog simply by going into Settings –> General in the WP admin control panel.
  • Gravatar support. All themes in the WP free theme directory must have Gravatar support. I have written an extensive guide that covers what Gravatars are and how to install them on WordPress.
  • Correctly floated elements, cross-browser compatibility. Sure, your theme might look great in Internet Explorer, but have you tried viewing it in Chrome, Opera, Firefox and Safari? Elements of your theme like the sidebar may end up in the darnest places if they are not floated properly. Look out for expandable div containers, sometimes when they are filled beyond capacity and overflow:hidden is not set, they can ruin the entire layout of your theme.
  • Widgetized sidebars. You should widgetize as many areas of your theme as possible. That way, non-coders can easily organize and move content around in the WordPress admin control panel. The sidebar is one area of your theme that must be widgetized.
  • Insecure use of $_SERVER data in header.php. WordPress developer Mark Jaquith elaborated on this issue on his blog.
  • Sample data: the last test. I have somehow attained the sample data that the WordPress theme team uses to test themes for submission in the directory. I’m not sure where I got this from but I’d like to make it available to everyone. Importing it into WordPress is a simple procedure and it allows you to see virtually every aspect of your theme, making it easy to identify things that need to be changed.

The above checklist is not a comprehensive list of things to implement before having your theme accepted; it is only meant to serve as a resource for theme developers who think they’ve covered all their bases but don’t want to go through the painfully long official checklist.

Note: No theme, no matter how adherent it is to the development checklist, is guaranteed inclusion into the free theme directory. Other factors such as use of color, originality and creativeness are judged subjectively by the WP developers who manage the free theme directory.

Should your theme be accepted, you will receive a congratulations email (it’s perfectly normal to gleefully jump up and down at that point) that will include a link to the page on WordPress.org that features your theme. You will be able to upload newer versions of your theme by simply changing the theme version number in style.css and then uploading it via the same page you used to upload the theme the first time. Newer versions of your theme are subject to approval.

Please leave a comment below if you are unclear about anything or if you found this guide helpful to you.

Tags: , , ,


You might like:

5 Responses to “Submitting a Theme to the WordPress Free Theme Directory [Tips and How-to]”

  1. Joe Troyer says:

    Great post, I have been looking everywhere for resources on what needs to be done to submit to wordpress. It seems like no body covers the topic except wordpess. The bullet list I sent to our developers already!

  2. I actually never knew you could do this so this was a really informative article.
    too bad I cant write html or php code very well hahhaha

    to each his own I guess

  3. kapil says:

    Is it necessary to submit blogs themes.I have a theme which is for Magazines and News Papers.Can i submit that kind of theme also.

  4. karthik says:

    I like this post,I can refer u..to submit themes blog into free wordpress sites.Thanks for sharing

  5. Nasif says:

    This can be a good opportunity to get backlink from wordpress theme by submitting it to theme directory

Leave a Reply

*