The theme must meet all requirements in the WordPress.org theme review. Along with this, it must also meet the following criteria.
Code
- 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
IS_WPCOM
. - 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.php
and match the format found in Underscores
JavaScript
- 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.
HTML/CSS
- All themes must use the HTML5 doctype and contain semantic markup.
- Themes must be responsive and retina-ready.
- Use
!important
and 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
/wp-admin
.
Documentation
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.
Language
- 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
- Don’t hook HTML or Javascript into
wp_head
. - No minification; it’s impossible to audit, and WordPress.com has its own minification process.
- The theme’s primary CSS must be in
style.css
. - Theme tags in
style.css
must 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.
Templates
- Themes must respect the Template Hierarchy.
front-page.php
must respect the user’sSettings → Reading → Front Page Displays
value.$content_width
must be set to the theme’s default content width.- Use full loops in all templates. Just calling
the_post()
in a template likesingle.php
orpage.php
is not enough. This is a great explanatory article.
Queries
- Themes must use
WP_Query
. - Don’t use unbounded queries. The
posts_per_page
parameter ofWP_Query
may not be set to-1
. Also, thenumberposts
parameter ofget_posts()
(and similar functions) must have a positive value. - Themes must not modify the main query.
Widgets
- 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.
Along with these we also recommend the following items.
- All the WordPress.org recommended items.
- We encourage the use of _s (Underscores) as this helps with review time.
- We encourage the use of navigation menus to handle social icons.