Recommended

Recommended items are best practices for themes but not essential. No theme will be resolved as not approved because they do not meet a recommended item.

In the Recommended items you can also find useful information about a wide range of areas beyond just code.

Code Code

  • Themes may optionally unregister core Widgets.

Top ↑

Core Functionality and Features Core Functionality and Features

It is recommended to use core markup for the following forms:

  • login form
  • search form

Top ↑

Design Design

While we understand not every reviewer is comfortable giving design feedback, we encourage you to look through this list of design recommendations while reviewing themes. Using the theme unit test data will also help identify issue with basic design elements.

Typography

Is the type large enough to comfortably read?

Body text should generally be 14px (or comparable size in ems/rems) or larger on desktop, unless using a font with a generous x-height.

Do paragraphs have enough line-height?

If you squint your eyes, you should still be able to see some space between lines.

Is there enough difference between headers and paragraphs to distinguish them from each other?

A good rule of thumb is 1.3-1.4 on headers and 1.4-1.6 on body text. Ex: line-height: 1.4;

Is the line length of the text comfortable, or does it stretch too far across the page?

Line length on larger screens or wider layouts should generally be between 45-75 characters per line.

Color

Is the color contrast high enough?

Check if the type is readable against its background. You can use a color contrast analyzer tool [ref] to check if a color and its background have sufficient color contrast.

Could someone with color blindness still view the site and be able to distinguish between sections and read the text?

Color should not be the only way of conveying important information. [ref]

For many people with color blindness, reds and greens look the same. Theme authors should avoid putting the two colors on top of each other. Ex: don’t put green text on a red background.

Design details

Can you tell if the theme has an intended audience?

“General” or “multipurpose” themes are often hard for new user to set up easily. Consider designing niche themes.

Is the design responsive?

Do the details (drop shadows, gradients, etc.) distract at all from the content?

Are any icons included in the theme vector?

Use svgs with appropriate fallbacks, or an icon font.

Is animation used appropriately?

Animation should be used only to call attention to the most important elements on a page, or to show change.Animation should not be used purely for decoration.

References

For more information on design, please watch the following presentations on WordCamp.tv:

You can also read these articles:

Top ↑

Documentation Documentation

The following are recommendations for documentation:

  • A readme.txt file can be included.
  • For changes it’s great to have a changelog.txt file also.
  • Keep a changelog wherever it is.
  • Anything you add to the theme that WordPress doesn’t do such as template files, should be documented.
  • Think of all types of users and make sure they can use the theme.
  • Anything your theme does specially should also be documented.
  • Clearly reference any special modifications in comments within the template and stylesheet files.
  • Add comments to modifications, template sections, and CSS styles, especially those which cross template files.
  • It’s also good practice to let someone know where they can get help for the theme.

WordPress PHP documentation standards

WordPress JavaScript documentation standards

Top ↑

Stylesheets and scripts Stylesheets and scripts

Third party library scripts and styles should not be prefix with the theme slug to prevent the assets being loaded multiple times. The handles should follow the same format as WordPress core which is

  • Words are separated by a dash (-)
  • It is all lowercase
  • Assets that are dependant on additional libraries should be prefixed with that library slug

jquery-fitvids, for example, is preferable to theme-slug-jquery-fitvids.

However, any custom scripts/styles that are specific to the theme, should still be prefixed.

Top ↑

Templates Templates

  • If you include your own theme template file, include documentation as to what it refers to.

Template Tags Template Tags

  • Themes may modify output via function parameter (body_class( $class )/post_class( $class ))
  • Themes can modify output via filter (body_class/post_class)