Automattic\WooCommerce\Blueprint\Importers

ImportInstallPlugin::processpublicWC 1.0

Processes the schema to install and optionally activate a plugin.

Метод класса: ImportInstallPlugin{}

Хуков нет.

Возвращает

StepProcessorResult. Result of the processing.

Использование

$ImportInstallPlugin = new ImportInstallPlugin();
$ImportInstallPlugin->process( $schema ): StepProcessorResult;
$schema(объект) (обязательный)
Schema object containing plugin information.

Код ImportInstallPlugin::process() WC 10.0.2

public function process( $schema ): StepProcessorResult {
	$result = StepProcessorResult::success( InstallPlugin::get_step_name() );

	$installed_plugins = $this->get_installed_plugins_paths();

	// phpcs:ignore
	$plugin = $schema->pluginData;

	// We only support CorePluginReference at the moment.
	if ( 'wordpress.org/plugins' !== $plugin->resource ) {
		$result->add_info( "Skipped installing a plugin. Unsupported resource type. Only 'wordpress.org/plugins' is supported at the moment." );
		return $result;
	}

	// If the plugin is already installed, skip the installation.
	if ( isset( $installed_plugins[ $plugin->slug ] ) ) {
		$result->add_info( "Skipped installing {$plugin->slug}. It is already installed." );
		return $result;
	}

	// If the resource type is not supported, return an error.
	if ( $this->storage->is_supported_resource( $plugin->resource ) === false ) {
		$result->add_error( "Invalid resource type for {$plugin->slug}." );
		return $result;
	}

	// Download the plugin.
	$downloaded_path = $this->storage->download( $plugin->slug, $plugin->resource );
	if ( ! $downloaded_path ) {
		$result->add_error( "Unable to download {$plugin->slug} with {$plugin->resource} resource type." );
		return $result;
	}

	// Install the plugin.
	$install = $this->install( $downloaded_path );

	if ( is_wp_error( $install ) ) {
		$result->add_error( "Failed to install {$plugin->slug}." );
		return $result;
	}

	$result->add_info( "Installed {$plugin->slug}." );

	// If the plugin should be activated, activate it.
	$should_activate = isset( $schema->options, $schema->options->activate ) && true === $schema->options->activate;
	if ( $should_activate ) {
		$activate = $this->activate( $plugin->slug );

		if ( $activate instanceof \WP_Error ) {
			$result->add_error( "Failed to activate {$plugin->slug}." );
			return $result;
		}

		$result->add_info( "Activated {$plugin->slug}." );
	}

	return $result;
}