Language_Pack_Upgrader::async_upgrade()public staticWP 3.7.0

Asynchronously upgrades language packs after other upgrades have been made.

Hooked to the upgrader_process_complete action by default.

Method of the class: Language_Pack_Upgrader{}

Hooks from the method

Return

null. Nothing (null).

Usage

$result = Language_Pack_Upgrader::async_upgrade( $upgrader );
$upgrader(false|WP_Upgrader)
WP_Upgrader instance or false. If $upgrader is a Language_Pack_Upgrader instance, the method will bail to avoid recursion. Otherwise unused.
Default: false

Changelog

Since 3.7.0 Introduced.

Language_Pack_Upgrader::async_upgrade() code WP 6.6.2

public static function async_upgrade( $upgrader = false ) {
	// Avoid recursion.
	if ( $upgrader && $upgrader instanceof Language_Pack_Upgrader ) {
		return;
	}

	// Nothing to do?
	$language_updates = wp_get_translation_updates();
	if ( ! $language_updates ) {
		return;
	}

	/*
	 * Avoid messing with VCS installations, at least for now.
	 * Noted: this is not the ideal way to accomplish this.
	 */
	$check_vcs = new WP_Automatic_Updater();
	if ( $check_vcs->is_vcs_checkout( WP_CONTENT_DIR ) ) {
		return;
	}

	foreach ( $language_updates as $key => $language_update ) {
		$update = ! empty( $language_update->autoupdate );

		/**
		 * Filters whether to asynchronously update translation for core, a plugin, or a theme.
		 *
		 * @since 4.0.0
		 *
		 * @param bool   $update          Whether to update.
		 * @param object $language_update The update offer.
		 */
		$update = apply_filters( 'async_update_translation', $update, $language_update );

		if ( ! $update ) {
			unset( $language_updates[ $key ] );
		}
	}

	if ( empty( $language_updates ) ) {
		return;
	}

	// Re-use the automatic upgrader skin if the parent upgrader is using it.
	if ( $upgrader && $upgrader->skin instanceof Automatic_Upgrader_Skin ) {
		$skin = $upgrader->skin;
	} else {
		$skin = new Language_Pack_Upgrader_Skin(
			array(
				'skip_header_footer' => true,
			)
		);
	}

	$lp_upgrader = new Language_Pack_Upgrader( $skin );
	$lp_upgrader->bulk_upgrade( $language_updates );
}