Why we contribute?

Contribution costs.

It takes time.

It takes freaki' time.


You will learn...

...a lot!

My contribution story.

During the war...

No, no, this is not a Only fools and Horses!

WCEU 2013

@porreirinha approves

Favourite WordCamp

Well, second favourite...

Noel's talk was cool, too! :)

Contributor day

First "contributions"

If I could do it...

You can, too.

Everything counts.

Every contribution counts.

Thanks to @grapplerulrich

...and #WCCH 2014

I joined Theme Review Team

What is a Theme Review Team?

We are a group of volunteers who review and approve themes submitted to be included in the official WordPress Theme directory.

We are a group of volunteers who review and approve themes submitted to be included in the official WordPress Theme directory.

The Theme Review team maintains the official Theme Review Requirements, the Theme Unit Test Data, and the Theme Check Plugin.

We also engage and educate the WordPress Theme community regarding best practices for themes.

We also engage and educate the WordPress Theme community regarding best practices for themes.


471 new tickets are waiting for review

928 in September

432 tickets are older than 2 weeks

September - 843

446 tickets are older than 1 week

September - 881

455 tickets are older than 3 days

September - 904

103 tickets are assigned.

September - 77

471 new tickets are waiting for review

I am here to engage :)

Rules are simple.

All must be met.

Become a Reviewer account

Join Slack

Tuesdays, 18:00 UTC

Meetings are a great way to get involved

Subscribe to Make Blog

Set up your testing environment

Any WP environment will do

Recommendation: VVV

Varying Vagrant Vagrants

In combination with: VV

Variable Varying Vagrant Vagrants

vv create

vv delete site_name

Any WP environment will do


On Windows


Disclaimer: This was a joke

So there is no excuses!

Import the theme

unit test data

Set WP_DEBUG to 'true'

Install Developer plugin

Awesome tool!

Let's meet each other, first!

Name, theme?

Key reviewers

Emil Uzelac: @emiluzelac

Chip Bennett: @chipbennett

Justin Tadlock: @greenshady

Tammie Lister: @karmatosed

Jose Castaneda: @jcastaneda

Ulrich Pogson: @grapplerulrich

Jenny Ragan: @djrmom

Carolina Nymark: @poena

Joe Dolson: @joedolson

David Kennedy: @davidakennedy

Sakin Shrestha: @sakinshrestha

Tuesday 18:00 UTC team chat.


A theme must meet all of the following requirements to be included in the theme repository.

Themes that have 3 or more prefixing or security issues may be closed as not-approved.

 However, theme authors may resubmit once they’ve corrected the issues.


If the theme has the tag ‘accessibility-ready’ then it needs to meet these requirements.


No PHP or JS errors.

Have a valid DOCTYPE declaration and include language_attributes.

Escape everything: Data Validation

No removing or modifying non-presentational hooks

Must meet all Theme Check requirements

Provide a unique prefix for everything

Core Functionality and Features 

Don’t include admin/feature pointers

No pay wall restricting any WordPress feature

No disabling of the admin toolbar

Use get_template_directory() rather than TEMPLATEPATH

Use get_stylesheet_directory() rather than STYLESHEETPATH

Use *_url() template tags, rather than bloginfo() equivalents

Avoid hard coding to modify content.

Example wp_title should be modified using a filter

Child theme ready!

Include comments_template()

Proper Tags, please

Use template tags and action/filter hooks properly

Presentation vs Functionality 

Presentation vs Functionality 


Non-design related functionality is not allowed


Document everything!

Enough documentation should be provided


All theme text strings are to be translatable

Include a text domain in style.css

Use a single unique theme slug

Can use any language for text, but only use the same one for all text


Be 100% GPL and/or 100% GPL-compatible licensed

Declare copyright and license explicitly

Use the license and license uri header slugs to style.css.

Declare licenses of any resources included such as fonts or images

All code and design should be your own or legally yours

Cloning of designs is not acceptable


Theme names must not use: WordPress, Theme

With both an uppercase W and P

Options and Settings 

Save options in a single array

Use sane defaults and don’t write default setting values to the database

Use proper capability rather than rely on a role

Use the Customizer for implementing theme options


Don't include plugins.

A theme can recommend plugins but not include those plugins in the theme code


The screenshot should be of the actual theme as it appears with default options, not a logo or mockup


Respect User privacy

Make any collection of user data “opt-in”, only! Disabled by default 

No URL shorteners used in the theme

Selling, credits and links 

If you are a theme shop you should be selling under GPL to be in the repo

There should only be one footer credit link (link to WordPress does not count)

Stylesheets and Scripts 

No hard coding of script and style files

No minification of scripts or files unless provide original files

Required to use core-bundled scripts rather than including their own version of that script

Include all scripts and resources it uses rather than hot-linking. The exception to this is Google Fonts.


Custom template files should be called using get_template_part() or locate_template()

Standard templates should be called by their respective function

Display the correct content according to the front page setting

It’s worth noting we are working to automate a lot of the above requirements.

Be polite.

Be respectful.

Let's review!

Introduction to Theme Review

By Milan Ivanović

Introduction to Theme Review

  • 1,025
Loading comments...

More from Milan Ivanović