Automattic\WooCommerce\Admin
PluginsHelper::install_plugins() │ public static │ WC 1.0
Install an array of plugins.
Method of the class: PluginsHelper{}
Hooks from the method
Return
Array
.
Usage
$result = PluginsHelper::install_plugins( $plugins );
- $plugins(array) (required)
- Plugins to install.
PluginsHelper::install_plugins() PluginsHelper::install plugins code WC 7.5.1
public static function install_plugins( $plugins ) { /** * Filter the list of plugins to install. * * @param array $plugins A list of the plugins to install. * @since 6.4.0 */ $plugins = apply_filters( 'woocommerce_admin_plugins_pre_install', $plugins ); if ( empty( $plugins ) || ! is_array( $plugins ) ) { return new \WP_Error( 'woocommerce_plugins_invalid_plugins', __( 'Plugins must be a non-empty array.', 'woocommerce' ) ); } require_once ABSPATH . 'wp-admin/includes/plugin.php'; include_once ABSPATH . '/wp-admin/includes/admin.php'; include_once ABSPATH . '/wp-admin/includes/plugin-install.php'; include_once ABSPATH . '/wp-admin/includes/plugin.php'; include_once ABSPATH . '/wp-admin/includes/class-wp-upgrader.php'; include_once ABSPATH . '/wp-admin/includes/class-plugin-upgrader.php'; $existing_plugins = self::get_installed_plugins_paths(); $installed_plugins = array(); $results = array(); $time = array(); $errors = new \WP_Error(); foreach ( $plugins as $plugin ) { $slug = sanitize_key( $plugin ); if ( isset( $existing_plugins[ $slug ] ) ) { $installed_plugins[] = $plugin; continue; } $start_time = microtime( true ); $api = plugins_api( 'plugin_information', array( 'slug' => $slug, 'fields' => array( 'sections' => false, ), ) ); if ( is_wp_error( $api ) ) { $properties = array( /* translators: %s: plugin slug (example: woocommerce-services) */ 'error_message' => sprintf( __( 'The requested plugin `%s` could not be installed. Plugin API call failed.', 'woocommerce' ), $slug ), 'api_error_message' => $api->get_error_message(), 'slug' => $slug, ); wc_admin_record_tracks_event( 'install_plugin_error', $properties ); /** * Action triggered when a plugin API call failed. * * @param string $slug The plugin slug. * @param \WP_Error $api The API response. * @since 6.4.0 */ do_action( 'woocommerce_plugins_install_api_error', $slug, $api ); $errors->add( $plugin, sprintf( /* translators: %s: plugin slug (example: woocommerce-services) */ __( 'The requested plugin `%s` could not be installed. Plugin API call failed.', 'woocommerce' ), $slug ) ); continue; } $upgrader = new \Plugin_Upgrader( new \Automatic_Upgrader_Skin() ); $result = $upgrader->install( $api->download_link ); $results[ $plugin ] = $result; $time[ $plugin ] = round( ( microtime( true ) - $start_time ) * 1000 ); if ( is_wp_error( $result ) || is_null( $result ) ) { $properties = array( /* translators: %s: plugin slug (example: woocommerce-services) */ 'error_message' => sprintf( __( 'The requested plugin `%s` could not be installed.', 'woocommerce' ), $slug ), 'slug' => $slug, 'api_version' => $api->version, 'api_download_link' => $api->download_link, 'upgrader_skin_message' => implode( ',', $upgrader->skin->get_upgrade_messages() ), 'result' => $result, ); wc_admin_record_tracks_event( 'install_plugin_error', $properties ); /** * Action triggered when a plugin installation fails. * * @param string $slug The plugin slug. * @param object $api The plugin API object. * @param \WP_Error|null $result The result of the plugin installation. * @param \Plugin_Upgrader $upgrader The plugin upgrader. * @since 6.4.0 */ do_action( 'woocommerce_plugins_install_error', $slug, $api, $result, $upgrader ); $errors->add( $plugin, sprintf( /* translators: %s: plugin slug (example: woocommerce-services) */ __( 'The requested plugin `%s` could not be installed. Upgrader install failed.', 'woocommerce' ), $slug ) ); continue; } $installed_plugins[] = $plugin; } $data = array( 'installed' => $installed_plugins, 'results' => $results, 'errors' => $errors, 'time' => $time, ); return $data; }