unload_textdomain( string $domain, bool $reloadable = false ): bool

Unloads translations for a text domain.

Parameters

$domainstringrequired
Text domain. Unique identifier for retrieving translated strings.
$reloadablebooloptional
Whether the text domain can be loaded just-in-time again.

Default:false

Return

bool Whether textdomain was unloaded.

Source

function unload_textdomain( $domain, $reloadable = false ) {
	global $l10n, $l10n_unloaded;

	$l10n_unloaded = (array) $l10n_unloaded;

	/**
	 * Filters whether to override the text domain unloading.
	 *
	 * @since 3.0.0
	 * @since 6.1.0 Added the `$reloadable` parameter.
	 *
	 * @param bool   $override   Whether to override the text domain unloading. Default false.
	 * @param string $domain     Text domain. Unique identifier for retrieving translated strings.
	 * @param bool   $reloadable Whether the text domain can be loaded just-in-time again.
	 */
	$plugin_override = apply_filters( 'override_unload_textdomain', false, $domain, $reloadable );

	if ( $plugin_override ) {
		if ( ! $reloadable ) {
			$l10n_unloaded[ $domain ] = true;
		}

		return true;
	}

	/**
	 * Fires before the text domain is unloaded.
	 *
	 * @since 3.0.0
	 * @since 6.1.0 Added the `$reloadable` parameter.
	 *
	 * @param string $domain     Text domain. Unique identifier for retrieving translated strings.
	 * @param bool   $reloadable Whether the text domain can be loaded just-in-time again.
	 */
	do_action( 'unload_textdomain', $domain, $reloadable );

	// Since multiple locales are supported, reloadable text domains don't actually need to be unloaded.
	if ( ! $reloadable ) {
		WP_Translation_Controller::get_instance()->unload_textdomain( $domain );
	}

	if ( isset( $l10n[ $domain ] ) ) {
		if ( $l10n[ $domain ] instanceof NOOP_Translations ) {
			unset( $l10n[ $domain ] );

			return false;
		}

		unset( $l10n[ $domain ] );

		if ( ! $reloadable ) {
			$l10n_unloaded[ $domain ] = true;
		}

		return true;
	}

	return false;
}

Changelog

VersionDescription
6.1.0Added the $reloadable parameter.
3.0.0Introduced.

User Contributed Notes

  1. Skip to note 2 content

    In case you need to prevent a text domain from unloading, the override_unload_textdomain filter is called before attempting to unload the text domain.

    add_filter( 'override_unload_textdomain', 'myplugin_override_unload_textdomain' );
    function myplugin_override_unload_textdomain( $override, $domain ) {
    	if ( $domain === 'my-domain' ) {
    		// Prevents WordPress from unloading this text domain
    		$override = true;
    	}
    	return $override;
    }

    Immediately before unloading a text domain, the unload_textdomain action is called to notify WordPress that the text domain is being unloaded.

    add_action( 'unload_textdomain', 'myplugin_unload_textdomain' );
    function myplugin_unload_textdomain( $domain ) {
    	// add code here to handle the unloading the text domain
    }

You must log in before being able to contribute a note or feedback.