The theme must meet all requirements in the 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
  • No frameworks or options frameworks.
  • No external, non-Automattic (Jetpack, Gravatar, etc.) APIs.
  • themes should always use the latest WordPress features.
  • Do not include code that won’t run on 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


  • 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.
  • 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 functionality.
  • Themes must support widgets.
  • Themes must support at least one Custom Menu.
  • No customizing /wp-admin.


All premium themes released on 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 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 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. View a list of all allowable tags.
  • 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.php must respect the user’s Settings → 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 like single.php or page.php is not enough. This is a great explanatory article.


  • Themes must use WP_Query.
  • Don’t use unbounded queries. The posts_per_page parameter of WP_Query may not be set to -1. Also, the numberposts parameter of 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 to allow their visitors to subscribe.

Along with these we also recommend the following items.