VIP Go platform specific
This document is for sites running on VIP Go.
Before reading this, it will be useful to read our documentation on your VIP Go codebase.
Plugins on VIP Go can be installed to one of two locations, the
/plugins directory or the
/client-mu-plugins directory, and can be activated via code or via the “Plugins” screen on your WordPress admin area.
This is our recommended approach to install and activate plugins for VIP Go:
- Install plugins to your
- Activate the plugins via a plugin loader file in
If you are familiar with developing for WordPress.com hosted VIP sites, you no longer need to bundle your custom plugins with your theme and we would encourage installing to the
plugins directory in your site repository.
Installing plugins #
On VIP Go all plugins must be installed by adding them to your git version control repository, hosted on GitHub. Having the plugin code in git version control allows multiple developers in your own team, and of course in the VIP team, to work on your code together, maintain and improve the site, and debug issues. On VIP Go we deploy the code from git, which also allows us to roll back to a previous “known good” state, if the site encounters issues.
As the VIP Go workflow is Git based, you can also reference submodules in your repository which will make maintaining third party code easier. VIP Go currently only supports public submodules, e.g. you cannot submodule a private GitHub repository or a Git repository hosted elsewhere which requires authentication.
Note that some plugin repositories, such as that for AMP for WordPress, contain unbuilt versions whereby the command,
composer install, needs to be run for the plugin to work properly. Repositories like this one cannot be referenced as submodules as we do not run these build commands on the server. In such cases developers should use one of the other methods outlined on this page.
Installing to the
plugins directory #
On VIP Go, there is a dedicated
plugins directory in the root of the site git repository; this directory works similarly to
WP_CONTENT_DIR . '/plugins/' in a WordPress.org installation. Installing plugins to this location is a matter of adding the plugin to a unique directory in
plugins/my-plugin, commit, then push to GitHub (see our documentation on how code is deployed on VIP Go).
Loading or activating plugins in the
The plugins in the
plugins directory can be activated and deactivated from the standard Plugins menu in the WordPress admin area, however we recommend loading your plugins from code. Loading plugins in code results in more control and a greater consistency across your production and non-production VIP Go environments, and your local development environments.
We recommend loading your plugins using a plugin loader file in
client-mu-plugins (example) using the
wpcom_vip_load_plugin( 'plugin-name' ); // Note this requires a specific naming structure: /plugin-name/plugin-name.php // You can also specify a specific root file: wpcom_vip_load_plugin( 'plugin-name/plugin.php' );
Installing to the
client-mu-plugins directory #
On VIP Go, there is a dedicated
client-mu-plugins directory in the root of the site git repository; this directory works similarly to
WP_CONTENT_DIR . '/mu-plugins/' in a WordPress.org installation.
If you want your plugins to be installed as MU (“must use”) plugins then you can place them in the
client-mu-plugins directory. MU plugins behave differently than plugins installed in the
plugins directory, so be sure to read up on the pros and cons and make a measured choice. If you have any questions, we’re happy to help.
Note that plugins contained within a directory in the
client-mu-plugins directory will need a “loader” file in the root of this directory to require the main plugin file. The contents of the loader file can be as simple as:
<?php require WPCOM_VIP_CLIENT_MU_PLUGIN_DIR . '/my-plugin/my-plugin.php';
When do plugins run? #
Depending on how the plugin is loaded, it will hook into the WordPress load order at different points (from latest to earliest):
- Manually activated from the
wp-adminPlugins screen (supported, but code activation is preferred): before the
wpcom_vip_load_plugin( 'plugin-name' )in your theme
functions.php(supported, but code activation from
client-mu-pluginsis preferred): before the
wpcom_vip_load_plugin( 'plugin-name' )from
client-mu-plugins(recommended): on the
Sometimes plugins may have dependencies on running before specific hooks, in order to hook on very early actions or filters you will need to load from
Version updates and maintenance #
We recommend that you always run the latest version of each of the plugins on your site, however this is not a requirement as we recognise that different development teams run different maintenance and patch cycles.
Each time we review a plugin (or a new version), we update this list of Reviewed Plugins. Choosing an already reviewed plugin will make it quicker for that plugin to be deployed and make it through our review queue. If you are wanting to add new functionality to a site, this list is a great place to start.
Automatically generated Pull Requests from our bot
The VIP team maintains a bot, wpcomvip-bot, to generate pull requests updating some plugins and themes. We do not currently have full coverage of all plugins used by all VIPs and the bot generated PRs are offered as a convenience; it remains the responsibility of individual VIP client developer teams to maintain the plugins used for their sites.
Remaining consistent with standard VIP practice, PRs will not be merged on your behalf unless they contain critical security fixes or resolve an existing or potential site outage. We recommend you merge the code into a development and/or non-production environments and test there before deploying to production.
Where the VIP team become aware of a security update, we will issue and merge PRs for affected production sites as soon as we can.
Featured partner plugins #
On VIP Go, our Featured Partner plugins are installed and maintained the same as other plugins, read the documentation above and follow the directions. If you have any questions, please get in touch.