Automattic\WooCommerce\Internal\Utilities
PluginInstaller::install_plugin
Programmatically installs a plugin. Upgrade/reinstall of already existing plugins is not supported. The plugin source must be the WordPress.org plugins directory.
$metadata can contain anything, but the following keys are recognized by the code that renders the notice in the plugins list:
- 'installed_by': defaults to
'WooCommerce'if not present. - 'info_link': if present, a "More information" link will be included in the notice.
If 'installed_by' is supplied and it's not 'WooCommerce' (case-insensitive), an exception will be thrown if the code calling this method is not in a WooCommerce core file (in 'includes' or in 'src').
Information about plugins successfully installed with this method will be kept in an option named 'woocommerce_autoinstalled_plugins'. Keys will be the plugin name and values will be associative arrays with these keys: 'plugin_name', 'version', 'date' and 'metadata' (same meaning as in the returned array).
A log entry will be created with the result of the process and all the installer messages (source: 'plugin_auto_installs'). In multisite this log entry will be created on each site.
The returned array will contain the following (only 'install_ok' and 'messages' if the installation fails):
'install_ok', a boolean.'messages', all the messages generated by the installer.'plugin_name', in the form of'directory/file.php'(taken from the instance of PluginInstaller used).'version', of the plugin that has been installed.'date', ISO-formatted installation date.'metadata', as supplied (except the'plugin_name'key) and only if not empty.
If the plugin is already in the process of being installed (can happen in multisite), the returned array will contain only one key: 'already_installing', with a value of true.
Метод класса: PluginInstaller{}
Хуков нет.
Возвращает
Массив. Information about the installation result.
Использование
$PluginInstaller = new PluginInstaller(); $PluginInstaller->install_plugin( $plugin_url, $metadata ): array;
- $plugin_url(строка) (обязательный)
- URL or file path of the plugin to install.
- $metadata(массив)
- Metadata to store if the installation succeeds.
По умолчанию:array()
Код PluginInstaller::install_plugin() PluginInstaller::install plugin WC 10.5.2
public function install_plugin( string $plugin_url, array $metadata = array() ): array {
$this->installing_plugin = true;
$plugins_being_installed = get_site_option( 'woocommerce_autoinstalling_plugins', array() );
if ( in_array( $plugin_url, $plugins_being_installed, true ) ) {
return array( 'already_installing' => true );
}
$plugins_being_installed[] = $plugin_url;
update_site_option( 'woocommerce_autoinstalling_plugins', $plugins_being_installed );
try {
return $this->install_plugin_core( $plugin_url, $metadata );
} finally {
$plugins_being_installed = array_diff( $plugins_being_installed, array( $plugin_url ) );
if ( empty( $plugins_being_installed ) ) {
delete_site_option( 'woocommerce_autoinstalling_plugins' );
} else {
update_site_option( 'woocommerce_autoinstalling_plugins', $plugins_being_installed );
}
$this->installing_plugin = false;
}
}