unload_textdomain

Выгружает (удаляет, отменяет) подключенный файл перевода.

Файлы перевода подключаются функцией load_textdomain() и производными от нее: load_plugin_textdomain(), load_theme_textdomain().

unload_textdomain() не удаляет сам файл, а просто выгружает информацию для перевода из глобальной переменной $l10n.

Хуки из функции:
override_unload_textdomain
unload_textdomain
Возвращает

Логические: true или false.

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

unload_textdomain( $domain );
$domain(строка) (обязательный)
Ярлык (идентификатор) загруженного файла перевода, который нужно выгрузить. Этот ярлык указывается в первом параметре при подключении файла, в функциях load_textdomain() и производных от нее.

Примеры

#1 Отменим перевод плагина

Допустим, у нас есть плагин и в нем подключается файл перевода с помощью load_plugin_textdomain('books' ...). А нам не нужен перевод этого плагина. Тогда мы можем отключить перевод, выгрузив подключенные данные перевода.

Файлы перевода обычно подключаются к хуку plugins_loaded который срабатывает раньше чем init. Поэтому воспользуемся хуком init, чтобы отключить ранее подключенные данные для перевода:

<?php
function unload_textdomain( $domain ) {
	global $l10n, $l10n_unloaded;

	$l10n_unloaded = (array) $l10n_unloaded;

	/**
	 * Filters whether to override the text domain unloading.
	 *
	 * @since 3.0.0
	 *
	 * @param bool   $override Whether to override the text domain unloading. Default false.
	 * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
	 */
	$plugin_override = apply_filters( 'override_unload_textdomain', false, $domain );

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

		return true;
	}

	/**
	 * Fires before the text domain is unloaded.
	 *
	 * @since 3.0.0
	 *
	 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
	 */
	do_action( 'unload_textdomain', $domain );

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

		$l10n_unloaded[ $domain ] = true;

		return true;
	}

	return false;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *