{"9":{"id":9,"title":"No Plugin Territory Functionality","excerpt":"Themes must not include any functionality that would be considered plugin territory. These include, but is not limited to custom post types, custom taxonomies, SEO options, analytics scripts fields.","category":"Plugin Territory","url":"http:\/\/themechecklist.org\/no-plugin-territory-functionality\/"},"11":{"id":11,"title":"A Clean HTML Head","excerpt":"There are a lot of requirements focused around the HTML head, so it's important to make sure yours is compliant.","category":"Code Quality","url":"http:\/\/themechecklist.org\/a-clean-html-head\/"},"12":{"id":12,"title":"Properly Enqueue Scripts and Styles","excerpt":"All Javascript and CSS stylesheets must be enqueued using the built in WordPress functions.","category":"Code Quality","url":"http:\/\/themechecklist.org\/properly-enqueue-scripts-and-styles\/"},"13":{"id":13,"title":"Using Bundled Scripts and Styles","excerpt":"Themes must always used bundled scripts and styles for common libraries like jQuery instead of using their own.","category":"Code Quality","url":"http:\/\/themechecklist.org\/using-bundled-scripts-and-styles\/"},"14":{"id":14,"title":"Default Theme Settings","excerpt":"Themes must use sane defaults.","category":"Theme Settings","url":"http:\/\/themechecklist.org\/default-theme-settings\/"},"15":{"id":15,"title":"No PHP Error Messages","excerpt":"Themes must not generate any error messages or warnings when WordPress debug mode is enabled.","category":"Code Quality","url":"http:\/\/themechecklist.org\/no-php-error-messages\/"},"17":{"id":17,"title":"Theme Check Plugin","excerpt":"Themes must pass all required checks in the theme check plugin.","category":"Code Quality","url":"http:\/\/themechecklist.org\/theme-check-plugin\/"},"18":{"id":18,"title":"Namespace All Functions, Classes, Constants and Global Variables","excerpt":"Themes must properly namespace everything in the public namespace.","category":"Code Quality","url":"http:\/\/themechecklist.org\/namespace-all-functions-classes-constants-and-global-variables\/"},"21":{"id":21,"title":"Theme Passes Current Unit Test","excerpt":"A good theme should pass all the requirements of the unit test.","category":"Visual Tests","url":"http:\/\/themechecklist.org\/theme-passes-current-unit-test\/"},"23":{"id":23,"title":"Theme Code Licensing","excerpt":"New theme developers often slip up on licensing so it's something you need to pay special attention to.","category":"Licensing","url":"http:\/\/themechecklist.org\/theme-code-licensing\/"},"24":{"id":24,"title":"Post and Body Class Functions Properly Used","excerpt":"Themes need to use the proper method for adding post and body classes","category":"Code Quality","url":"http:\/\/themechecklist.org\/post-and-body-class-functions-properly-used\/"},"25":{"id":25,"title":"Don't Support Outdated Versions of WordPress","excerpt":"Themes must not support outdated versions of WordPress. Outdated is considered any version beyond the current and 2 versions back.","category":"Code Quality","url":"http:\/\/themechecklist.org\/dont-support-outdated-versions-of-wordpress\/"},"27":{"id":27,"title":"Theme Settings and Admin Pages","excerpt":"Themes must properly implement theme settings pages.","category":"Theme Settings","url":"http:\/\/themechecklist.org\/theme-settings-and-admin-pages\/"},"28":{"id":28,"title":"Everything Must Be Saved Into a Single Array Using a Proper Prefix","excerpt":"Themes can't save their settings into multiple database entries. These should be saved into a single array and the option key must be prefixed with the theme slug.","category":"Theme Settings","url":"http:\/\/themechecklist.org\/settings-must-be-saved-into-a-single-array\/"},"32":{"id":32,"title":"Used Checked and Selected Functions","excerpt":"Themes must use checked() and selected() where necessary.","category":"Theme Settings","url":"http:\/\/themechecklist.org\/used-checked-and-selected-functions\/"},"33":{"id":33,"title":"Escape User Inputted Values","excerpt":"When ever a user inputted value is echoed, it must be escaped by a data validation function. ","category":"Security","url":"http:\/\/themechecklist.org\/escape-user-inputted-values\/"},"34":{"id":34,"title":"Image\/Photo Licensing","excerpt":"The license of each photo bundled with the theme should be GPL compatible and verified.","category":"Licensing","url":"http:\/\/themechecklist.org\/imagephoto-licensing\/"},"36":{"id":36,"title":"English Front Facing Text","excerpt":"All text that a theme can see, either in their admin or the front end of their site must default to being English.","category":"Language and Translation","url":"http:\/\/themechecklist.org\/english-front-facing-text\/"},"37":{"id":37,"title":"Theme Text Translation","excerpt":"If used, themes must use translation functions properly.","category":"Language and Translation","url":"http:\/\/themechecklist.org\/theme-text-translation\/"},"39":{"id":39,"title":"No External Resources or Requests","excerpt":"Themes can not load external resources or make external requests without informed user consent.","category":"Security","url":"http:\/\/themechecklist.org\/no-external-resources-or-requests\/"},"40":{"id":40,"title":"Theme Doesn't Lock Out Core Functionality","excerpt":"Themes must not lock out core features of WordPress. Up-sell themes can't advertise core features as part of the paid version.","category":"Up-Sell Themes","url":"http:\/\/themechecklist.org\/theme-doesnt-lock-out-core-functionality\/"},"41":{"id":41,"title":"Commercial Versions of The Theme Are GPL","excerpt":"All themes on the theme author's site must be GPL compatible. This includes commercial versions of the submitted theme and all other themes listed on the author's site.","category":"Up-Sell Themes","url":"http:\/\/themechecklist.org\/commercial-versions-of-the-theme-are-gpl\/"},"42":{"id":42,"title":"Valid Credit Links, Author URI and Theme URI","excerpt":"Themes must have valid author URI and theme URI. Both of these must be directly related to the theme author. The theme credit link can only be one of these 2 URIs.","category":"General","url":"http:\/\/themechecklist.org\/valid-credit-links-author-uri-and-theme-uri\/"},"43":{"id":43,"title":"Theme Properly Handles Comments","excerpt":"A theme must properly handle comments using the correct template tags and by supporting the comment-reply script.","category":"Code Quality","url":"http:\/\/themechecklist.org\/theme-properly-handles-comments\/"},"44":{"id":44,"title":"Properly Include Template Parts","excerpt":"Themes must use the dedicated WordPress functions to include template parts, or use get_template_part\/locate_template for custom template parts.","category":"Code Quality","url":"http:\/\/themechecklist.org\/properly-include-template-parts\/"},"45":{"id":45,"title":"Proper Archive Navigation","excerpt":"Themes must support core WordPress post archive pagination. They can include support for other pagination plugins, but must always fall back to the core functions.","category":"Code Quality","url":"http:\/\/themechecklist.org\/proper-archive-navigation\/"},"46":{"id":46,"title":"Theme Has a Properly Formed Footer","excerpt":"The only real requirement here is that the theme has a wp_footer call just before the closing body tag.","category":"Code Quality","url":"http:\/\/themechecklist.org\/theme-has-a-properly-formed-footer\/"},"47":{"id":47,"title":"Handles Page Pagination","excerpt":"Themes must display page pagination.","category":"Code Quality","url":"http:\/\/themechecklist.org\/handles-page-pagination\/"},"49":{"id":49,"title":"Include\/Require Additional Include Files Properly","excerpt":"Themes must include additional include files in their functions.php using get_template_directory or get_stylesheet_directory if the file is designed to be overwritten by a child theme.","category":"Code Quality","url":"http:\/\/themechecklist.org\/includerequire-additional-include-files-properly\/"},"50":{"id":50,"title":"Use The Proper Functions To Retreive URLs","excerpt":"Themes must use the proper *_url or *_uri function to get URLs within WordPress - get_bloginfo must not be used to get URLs.","category":"Code Quality","url":"http:\/\/themechecklist.org\/use-the-proper-functions-to-retreive-urls\/"},"55":{"id":55,"title":"No Admin Notices Outside Theme's Admin Pages","excerpt":"Themes are only allowed displaying admin notices on admin pages that they specifically create.","category":"Theme Settings","url":"http:\/\/themechecklist.org\/no-admin-notices-outside-themes-admin-pages\/"},"57":{"id":57,"title":"Correct Spelling of WordPress","excerpt":"","category":"General","url":"http:\/\/themechecklist.org\/correct-spelling-of-wordpress\/"},"58":{"id":58,"title":"Proper Theme Screenshot","excerpt":"","category":"General","url":"http:\/\/themechecklist.org\/proper-theme-screenshot\/"},"60":{"id":60,"title":"$content_width Set Inside a Theme Setup Function","excerpt":"The value of $content_width must be set globally, to the pixel width of actual post content and set in a theme setup function.","category":"Code Quality","url":"http:\/\/themechecklist.org\/content_width-set-inside-a-theme-setup-function\/"},"64":{"id":64,"title":"Sane Defaults","excerpt":"Themes must work right out the box, without any user configuration and must not save settings to the database before the user interacts with the settings page.","category":"Theme Settings","url":"http:\/\/themechecklist.org\/sane-defaults\/"},"66":{"id":66,"title":"No Admin Notices or Redirects on Theme Activation","excerpt":"Themes must not perform redirects or display admin notices after they're activated.","category":"Theme Settings","url":"http:\/\/themechecklist.org\/no-admin-notices-or-redirects-on-theme-activation\/"}}