function genesis_onboarding_install_dependencies( array $dependencies, $step = 0 ) { if ( empty( $dependencies ) ) { return; } $step = absint( $step ); $existing_plugins = get_plugins(); require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; $upgrader = new Plugin_Upgrader( new Genesis_Silent_Upgrader_Skin() ); $onboarding_plugin = $dependencies[ $step ]; if ( ! array_key_exists( $onboarding_plugin['slug'], $existing_plugins ) ) { remove_action( 'upgrader_process_complete', [ 'Language_Pack_Upgrader', 'async_upgrade' ], 20 ); add_action( 'upgrader_process_complete', 'genesis_onboarding_install_language_packs', 20 ); $short_slug = strtok( $onboarding_plugin['slug'], '/' ); $api = plugins_api( 'plugin_information', [ 'slug' => $short_slug ] ); if ( is_wp_error( $api ) ) { /** * Error object from API communication. * * @var WP_Error */ return $api; } $installed = $upgrader->install( $api->download_link ); if ( is_wp_error( $installed ) ) { /** * Error object from installation process. * * @var WP_Error */ return $installed; } } activate_plugin( $onboarding_plugin['slug'], false, false, true ); }