Developing on WordPress VIP
WordPress VIP’s infrastructure is built with robust, built-in security and performance enhancement features. Because of these customizations, developers will find that several aspects of the platform are dissimilar to other hosting platforms. The information below is intended to highlight some of those differences for developers who are new to the VIP Platform and provide an overview of the tools and accounts that they need to get started.
- VIP MU plugins: The VIP Platform’s Must Use plugins (VIP MU plugins) are deployed to all VIP Platform WordPress applications. The VIP MU plugins codebase provides WordPress applications with integration to the VIP Platform infrastructure (e.g. cache management), helper functions useful to developers, managed plugin options, and commonly used performance enhancements.
- VIP File System: Files uploaded to a WordPress site’s
/wp-content/uploads/
directory are mapped to a separate, globally distributed object store called the VIP File System. The VIP File System is read-only, but several methods exist to programmatically access and interact with the media files that are stored there. - Plugin incompatibilities: Some WordPress plugins are incompatible with VIP’s read-only web containers, read-only VIP File System, and the built-in caching layers. As a best practice, developers are advised to rigorously test all plugin candidates—and all custom code—on non-production environments before adding them to a production environment.
- Site migration: To migrate a site to the VIP Platform, use VIP-CLI to import SQL database files and import media files to the production environment.
- VIP’s infrastructure is built to support a “code up; content down” workflow. Tools for database syncing are designed for production to non-production environments only, and file sharing by the VIP File System is intended to eliminate the need to manually copy media files between environments during development.
GitHub repository
There is no SFTP access to an application’s code or other related assets. Developers can only modify an application’s code by using a version-controlled GitHub development workflow.
All customer development teams are strongly recommended to use the GitHub pull request flow in order to streamline code reviews and deployments.
Every WordPress and Node.js application on the VIP Platform is supplied with a GitHub repository within the wpcomvip GitHub organization.
WordPress repositories
GitHub repositories for WordPress applications are initialized as a fork of the vip-go-skeleton repository. Review the WordPress skeleton documentation to understand the purpose of the supplied files and directories and how to develop with them.
- WordPress plugin and theme directories can only be added or removed via code commits to GitHub; not from within the WordPress Admin dashboard.
- The contents of a WordPress site’s
/wp-content/uploads/
directory are not located within the GitHub repository. Files uploaded to a WordPress site’s/wp-content/uploads/
directory are stored in the VIP File System. - Any code pushed to the WordPress application’s repository in a GitHub pull request is analyzed by the VIP Code Analysis Bot (the Bot) for code quality and security.
Node.js repositories
Github repositories for Node.js applications are initialized as a fork of the vip-go-node-skeleton repository. Any code pushed to the Node.js repository in a GitHub pull request can be analyzed by Harmonia for pre-deploy testing and validation.
Developers for Node.js applications should take time to review the requirements for their application code to successfully build and deploy to a VIP Platform environment.
GitHub user accounts
To modify code, a developer’s GitHub user account must be added to the application’s wpcomvip GitHub repository with write
access or greater. A developer should reach out to one of the organization’s primary contacts to request access to an application’s GitHub repository if it has not yet been granted.
VIP Dashboard and VIP-CLI
Developers can review and interact with the settings of an application’s environments by using the VIP Dashboard and VIP-CLI. A developer’s ability to modify the settings of an application’s environments is dependent on the Org role and/or App role that is assigned to their VIP Dashboard user account for that application.
Review the documentation for an overview of the tools and features available in the application view of the VIP Dashboard. The VIP Dashboard provides the ability to manage domains, TLS certificates, software settings, review several types of logs, and much more.
A VIP Dashboard user account is also required to have access to VIP-CLI commands. VIP-CLI is a command-line interface for interacting with VIP Platform applications and environments. Developers can use VIP-CLI to run WP-CLI commands and perform actions such as syncing data from production to development environments. A developer must install VIP-CLI on their local machine, and authenticate their user account by retrieving their personal access token from the VIP Dashboard.
VIP Dashboard user accounts
To have access to an application’s VIP Dashboard, a developer must accept an invitation to the application’s organization. A developer should reach out to one of the organization’s primary contacts to request an invitation to access to an application’s VIP Dashboard if it has not yet been granted.
Local development for WordPress applications
Developers for WordPress applications are strongly encouraged to use the VIP Local Development Environment. The VIP Local Development Environment is a feature built in to VIP-CLI and nearly replicates the features and behaviors of a WordPress application’s platform environment. The VIP Local Development Environment is the only local development application eligible to receive support from the WordPress VIP Support team.
When developing code locally that requires Node.js—such as plugins or themes for a WordPress application—it is recommended that Node.js on the local development environment is maintained at a Long Term Support (LTS) release version. The resulting artifact from code built locally is then committed to the application’s GitHub repository as static assets. Node.js is not run on VIP WordPress environments.
Developers are encouraged to install PHP_CodeSniffer (PHPCS) to aid with local development. Scanning code locally with PHPCS provides useful feedback on code quality based on a defined set of coding standards.
Logs and monitoring
Developers should review the documentation for the types of logs and performance monitoring options that are available to them. These include but are not limited to:
- Logged output for PHP error reporting on WordPress environments including fatals, warnings, and notices—and output sent to
stdout
orstderr
on Node.js environments—is retrievable in the Runtime Logs panel in the VIP Dashboard or with the VIP-CLI Runtime Logs command. - Slow query Logs provide the ability to identify queries made by an application that take an unusually long time to execute.
- The Insights & Metrics panel in the VIP Dashboard provides insights into the performance, health, and usage of an application.
- New Relic application performance monitoring (APM) tool available for WordPress environments and Node.js environments.
- Query Monitor developer tools panel for WordPress sites. Useful for debugging database queries, PHP errors, warnings and notices, and more.
Last updated: December 22, 2023