The theme must meet all requirements in the WordPress.org theme review. Along with this, it must also meet the following criteria.
- Use WordPress functionality and features first, if available (This includes Jetpack features for WordPress.com).
- No frameworks or options frameworks.
- No external, non-Automattic (Jetpack, Gravatar, etc.) APIs.
- WordPress.com themes should always use the latest WordPress features.
- Do not include code that won’t run on WP.com. This includes any code for compatibility and the use of
- Use filters to modify the output of template tags, if available.
- Use client-side feature detection, rather than server side browser detection.
- Themes must not directly access PHP super globals.
- No output buffering.
- No custom fields or post meta boxes.
- No removing or modifying Core hooks.
- Footer credits must be located in
footer.phpand match the format found in Underscores
- Protect function and variable names from conflicts in the global namespace. Always use theme slug prefixes, or wrap code in an immediately invoked function expression (IFFE), like Underscores.
- All themes must use the HTML5 doctype and contain semantic markup.
- Themes must be responsive and retina-ready.
!importantand inline styles only as a last resort.
- You can’t include code or scripts for extending support below IE9.
Core Functionality and Features
- All code and widgets must not replicate existing WordPress.com functionality.
- Themes must support widgets.
- Themes must support at least one Custom Menu.
- No customizing
All premium themes released on WordPress.com have a showcase page and support documentation. Follow the documentation style guide to ensure that users have a clear understanding of a theme’s features, and where to get help.
- Provide context where appropriate.
- Avoid common anti-patterns.
- Themes must provide right-to-left styles.
- Translators need to be able to deactivate web fonts that don’t support the character set of their language.
- Translation strings should be escaped for improved security. See _s (Underscores) for examples.
Options and Settings
- Only implement theme options through the Customizer.
- Theme options must be in one section, entitled ‘Theme Options’.
- No theme options should allow users to add scripts or styles.
- Do not include any additional options for setting colors or fonts: these are handled on WordPress.com by our Custom Fonts and Custom Colors features.
- Themes need to support Jetpack Infinite Scroll.
Stylesheets and Scripts
- No minification; it’s impossible to audit, and WordPress.com has its own minification process.
- The theme’s primary CSS must be in
- Theme tags in
style.cssmust be be lowercase with no spaces. Separate multiple-word tags with a dash.
- Line heights must be set to relative values, so that Custom Fonts work correctly.
- Enqueue Google fonts using this format.
- Themes must respect the Template Hierarchy.
front-page.phpmust respect the user’s
Settings → Reading → Front Page Displaysvalue.
$content_widthmust be set to the theme’s default content width.
- Use full loops in all templates. Just calling
the_post()in a template like
page.phpis not enough. This is a great explanatory article.
- Themes must use
- Don’t use unbounded queries. The
WP_Querymay not be set to
-1. Also, the
get_posts()(and similar functions) must have a positive value.
- Themes must not modify the main query.
- Prefix widget titles with the themename, ie.
Theme Name: Widget Title.
- Widget areas must not contain hardcoded widgets.
- Visible links to feeds must not appear in themes. We suggest that site owners use the Follow Blog Widget on WordPress.com to allow their visitors to subscribe.