PHP, JS, CSS, HTML

  • Themes must not have any notices, warnings, or errors. Test using one of the following methods:
  • Themes must not generate any JavaScript errors

Doctype Declaration

  • Themes are required to have a valid HTML document HEAD:
    • Valid DOCTYPE declaration
    • <html> tag includes language_attributes()
    • Correct XFN profile link in <head> tag: <head profile=”http://gmpg.org/xfn/11″&gt; or <link rel=”profile” href=”http://gmpg.org/xfn/11&#8243; /> (Exception: Wholly HTML 5 themes must not have the profile, as HTML 5 does not support it.)
    • Correct content-type meta declaration: <meta http-equiv=”Content-Type” content=”<?php bloginfo(‘html_type’); ?>; charset=<?php bloginfo(‘charset’); ?>” /> OR <meta charset=”<?php bloginfo(‘charset’); ?>” /> declared before <title>
    • <title> includes wp_title() only, and any modifications, if included, are added via wp_title filter. Filtered content uses get_bloginfo() as appropriate if displaying site title, description, etc.

Theme Namespacing

  • Themes are required to use theme-slug (or a reasonable facsimile) as textdomain for translation
  • Themes are required to use theme-slug ( or a reasonably unique slug) as a prefix for anything in the public namespace, including all custom function names, classes, hooks, public/global variables, database entries (Theme options, post custom metadata, etc.)

Note, when using a theme slug for text translation methods, the slug must be a string and not a variable or constant. Using a variable or constant will work fine in PHP, but causes problems for automated text translation tools. For more information, see Mark Jaquith’s post on this topic. This guideline is required to be followed for all uses of the I18N translation mechanisms.

Language

  • Themes are required to have all public-facing text in English.

Other