3. Development Guide
3.1 Code Audits and GuidelinesLink to chapter 1
We have automatic and manual code reviews in place for all plugins and themes that are added to any site we host. All plugins and themes must adhere to the WordPress Coding Standards.
In addition, the plugin or theme must:
- not rely on 3rd party services or phone home without our approval;
- not automatically upgrade or modify theme files;
- not change timeout of wp_remote_* calls;
- not ever change wp_feed_cache_transient_lifetime (hook to the filter);
- not use SHOW TABLES, instead use SHOW TABLES LIKE ‘wp_xyz’;
- not use DESC to describe table, instead use DESCRIBE;
- not change WP_DEBUG, error_reporting or display_errors;
- not remove default roles (remove_role);
- not flush rewrite rules ($wp_rewrite->flush_rules is not allowed);
- not flush cache (wp_cache_flush is not allowed);
- not contain SQL queries. Themes should use WordPress built in functions for fetching post, pages, attachments, users and respective meta tags;
- not create new tables or modify table schema;
- not use filesystem functions listed here;
- not store files in the server file system. Themes must always make use of WordPress attachments if it accepts file uploads
3.2 Bitbucket and Version ControlLink to chapter 2
We use Bitbucket for version control. Customers that have custom themes should initiate a pull request to alert our team of developers to initiate a code review.
Depending on the queue and complexity of the theme (or edit), a review can take up to 24 hours (or more for complex themes).
3.3 Development EnvironmentsLink to chapter 3
We can set you up with a testing environment in which to upload themes or major changes to before moving to production. For individual sites, we have a clone tool, which can be used for testing out a new theme or adding new content, and then writing over the existing site with just a few clicks.
3.4 Change Management ProceduresLink to chapter 4
In order to ensure the reliability of our service, we’ve implemented a change management policy that we follow for all updates, upgrades, and code changes.
We perform all WordPress core, plugin and theme updates, general improvements, and server maintenance during a regularly scheduled weekly window.
All changes are thoroughly tested by our developers and quality assurance team as follows:
- Tested fully in local testing environment by technical team.
- Automated and unit testing in multiple development environments.
- Manual testing by QA team in multiple development environments using all major browsers and operating systems, including mobile devices.
- Full deployment to small subset of live networks and all development/test networks that willingly participate in beta testing program.
- Final manual code and performance review by technical team leadership.
- Full deployment to all customers during next regular ‘Primary Updates’ window (Tuesdays) and an update published to our change log alerting customers.
- Continuous monitoring by technical and support teams.
- For any significant changes that end users may notice, we’ll provide documentation and warning to Super Administrators well in advance.