Yoast\WP\SEO\Initializers

Migration_Runner::run_migrations()publicYoast 1.0

Initializes the migrations.

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

Хуков нет.

Возвращает

true|false. True on success, false on failure.

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

$Migration_Runner = new Migration_Runner();
$Migration_Runner->run_migrations( $name, $version );
$name(строка) (обязательный)
The name of the migration.
$version(строка)
The current version.
По умолчанию: \WPSEO_VERSION

Код Migration_Runner::run_migrations() Yoast 22.4

public function run_migrations( $name, $version = \WPSEO_VERSION ) {
	if ( ! $this->migration_status->should_run_migration( $name, $version ) ) {
		return true;
	}

	if ( ! $this->migration_status->lock_migration( $name ) ) {
		return false;
	}

	$migrations = $this->loader->get_migrations( $name );

	if ( $migrations === false ) {
		$this->migration_status->set_error( $name, "Could not perform $name migrations. No migrations found.", $version );
		return false;
	}

	try {
		$this->adapter->create_schema_version_table();
		$all_versions      = \array_keys( $migrations );
		$migrated_versions = $this->adapter->get_migrated_versions();
		$to_do_versions    = \array_diff( $all_versions, $migrated_versions );

		\sort( $to_do_versions, \SORT_STRING );

		foreach ( $to_do_versions as $to_do_version ) {
			$class = $migrations[ $to_do_version ];
			$this->run_migration( $to_do_version, $class );
		}
	} catch ( Exception $exception ) {
		// Something went wrong...
		$this->migration_status->set_error( $name, $exception->getMessage(), $version );

		if ( \defined( 'YOAST_ENVIRONMENT' ) && \YOAST_ENVIRONMENT !== 'production' ) {
			throw $exception;
		}

		return false;
	}

	$this->migration_status->set_success( $name, $version );

	return true;
}