Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Contributing to the Theme Review Team

Contributing to the Theme Review Team

Caleb Burks

July 19, 2015

More Decks by Caleb Burks

Other Decks in Programming


  1. About Me • Caleb Burks • WC Ninja at Automattic

    • Loves Gummy Bears • Tweets at @WPprodigy
  2. Hmm, any other ways to contribute? • Core • Design

    • Accessibility • Polyglots • Themes
  3. Themes? The Theme Review Team reviews and approves every Theme

    submitted to the WordPress Theme repository. Reviewing Themes sharpens your own Theme development skills.
  4. Step #2 • Join Slack at chat.wordpress.org! • Then join

    the TRT in #themereview. • All TRT meetings are done in Slack. Weekly meetings are on Tuesday’s at 18:00 UTC.
  5. Step #3 • Subscribe to the blog at make.wordpress.org/themes. •

    Being subscribed to this blog lets you keep in touch with the team and updates.
  6. It's Go Time Now that you are apart of the

    team, it's time to start a review!
  7. Manual Set-up • Install a fresh version of WordPress locally

    using Mamp, Wamp, or Xampp. • Set WP_DEBUG to 'true' in your wp-config.php file.
  8. Manual Set-up - Part 2 • Set up the site

    with the demo settings. • Import the theme unit test data. • Configure Site Settings • More details found at: codex.wordpress.org/Theme_Unit_Test
  9. Manual Set-up - Part 3 Install the following Plugins: -Theme

    Check -Debug Bar -Log Deprecated Notices -Monster Widget -WordPress Beta Tester -Regenerate Thumbnails Or just install: https://wordpress.org/plugins/developer/
  10. Automatic Set-up - VVV • Install VVV • Install ThemeReview

    VVV • https://github.com/aubreypwd/wordpress- themereview-vvv • Sit back and enjoy automation at it's finest
  11. Requirements: Accessibility If the theme has the tag ‘accessibility-ready’ then

    it needs to meet some extra accessibillty requirements. https://make.wordpress.org/themes/handbook/review/ accessibility/
  12. Requirements: Code • No PHP or JS errors • Sanitize

    everything • Provide a unique prefix for everything the Theme defines in the public namespace
  13. Requirements: Core Functionality and Features • Use WordPress functionality and

    features first, if available • Include comments_template() • No pay wall restricting any WordPress feature
  14. Requirements: Presentation vs Functionality • Themes must not not generate

    user content, or configure non-theme site options or site functionality
  15. Requirements: Language • All theme text strings are to be

    translatable • Include a text domain in style.css • Use a single unique theme slug – as the theme slug appears in style.css • Can use any language for text, but only use the same one for all text.
  16. Requirements: Licensing • Be 100% GPL and/or 100% GPL-compatible licensed.

    • Declare copyright and license explicitly. Use the license and license uri header slugs to style.css. • Declare licenses of any resources included such as fonts or images. • All code and design should be your own or legally yours. Cloning of designs is not acceptable.
  17. Requirements: Naming • Theme names must not use: WordPress, Theme.

    • capital_P_dangit -- Spell “WordPress” correctly in all public facing text.
  18. Requirements: Options and Settings • Use the Customizer for implementing

    theme options. • Save options in a single array. • Use sane defaults and don’t write default setting values to the database. • Lots of Customizer examples available at: github.com/WPTRT/code-examples
  19. Requirements: Plugins • Do not include any plugins. • A

    theme can recommend plugins but not include those plugins in the theme code. • Don’t do things in a theme considered plugin territory. • Custom Post Types, Shortcodes, etc.
  20. Requirements: Stylesheets and Scripts • No hard coding of scripts

    and styles. Everything should be enqueued. • No analytics or tracking.
  21. Requirements: Security and Privacy • Don’t phone home without informed

    user consent. • Validate and sanitize untrusted data before entering into the database. All untrusted data should be escaped before output! • Use esc_attr() for text inputs and esc_textarea() for textareas.
  22. Reasons to join the TRT • Five for the Future

    • ma.tt/five-for-the-future • Personal Growth / Learning • Helping others learn