When 0-loader.php
is inserted into the mu-plugins
directory it will load all subdirectory plugin as it would normal plugins., (*1)
You have multiple options to manipulate where the Plugin Loader will look for a vendor folder. Define one of the following values in wp-config:, (*2)
If you define nothing it will load the same as 2. wp-content
directory., (*3)
Load from the parent directory above mu-plugins
(should be the wp-content
dir). This is only used when no LL_AUTOLOAD_DIR
is set., (*4)
define('LL_AUTOLOAD_CONTENT_DIR', true);
Use the current Child theme via get_stylesheet_directory
as the theme folder containing the vendor folder. This is only used when no LL_AUTOLOAD_DIR
is set., (*5)
define('LL_AUTOLOAD_USE_CHILD', true);
Use the current parent theme via get_template_directory
as the theme folder containing the vendor folder. This is only used when no LL_AUTOLOAD_DIR
is set., (*6)
define('LL_AUTOLOAD_USE_PARENT', true);
Use a specific directory. The script will still append /vendor/autoload.php
to this path., (*7)
define('LL_AUTOLOAD_DIR', '/path/to/wordpress/theme/');
Setting | Result |
---|---|
Nothing | wp-content directory |
define( 'LL_AUTOLOAD_DIR', '/tmp/' ); |
/tmp/ |
define( 'LL_AUTOLOAD_CONTENT_DIR', true ); |
wp-content directory |
define( 'LL_AUTOLOAD_USE_CHILD', true ); |
Stylesheet directory (child theme) |
define( 'LL_AUTOLOAD_USE_PARENT', true ); |
Template directory (parent theme) |
Right before the vendor autoload file is loaded, the pre-autoload.php
file in the directory specified as the autoload directory is required if it exists., (*8)
This file can be used to set environment variables required in composer loaded dependencies., (*9)
Right after the vendor autoload file is loaded, but before the mu-plugins
are loaded, the post-autoload.php
file in the directory specified as the autoload directory is required if it exists., (*10)
This file can be used to bootstrap/configure mu-plugin loaded dependencies, or trigger actions that need to happen as early as possible, but autoloading to be set up., (*11)
Adding logging is an example of this. You probably require the Monolog composer dependency, but want it to be bootstrapped before we load the mu-plugins., (*12)
In some cases, loading a plugin as must-use plugin can cause issues with the plugin. Instead, you have the option to force load plugins like normal plugins., (*13)
In the path where also your vendor folder is, create a file called ll-forced-plugins.json
.
Inside, paste the following content., (*14)
{ "forced_plugins": [ { "slug": "first-plugin/first-plugin.php", "network": false }, { "slug": "second-plugin/second-plugin.php", "network": true } ] }
The slug references the plugin file to load. Network determines if a plugin should be network activated if it's a multisite installation., (*15)
Please note these force activated plugins will only be activated when visiting the WP-admin. This is needed because some plugins want to perform actions like redirects directly after activation., (*16)
In v3, the wp-content
directory loads by default, instead of the template directory in v2. To restore behaviour, set define( 'LL_AUTOLOAD_USE_PARENT', true );
in wp-config.php
., (*17)