Функция unload_textdomain()
в WordPress предназначена для выгрузки (удаления) загруженных переводов для определенного текстового домена. Это может быть полезно в ситуациях, когда вам нужно отключить перевод для определенного плагина или темы, освобождая ресурсы и улучшая производительность.
unload_textdomain( string $domain, bool $reloadable = false ): bool
Параметры
- $domain (string, обязательный): Уникальный идентификатор текстового домена, для которого нужно выгрузить переводы.
- $reloadable (bool, необязательный): Указывает, может ли текстовый домен быть загружен снова. По умолчанию
false
.
Возврат
Функция возвращает true
при успешной выгрузке текстового домена и false
в противном случае.
Важные хуки
override_unload_textdomain
: Этот фильтр позволяет предотвратить выгрузку текстового домена, если это необходимо.unload_textdomain
: Действие, которое срабатывает сразу перед выгрузкой текстового домена, позволяя выполнить дополнительные действия.
Пример 1: Отключение перевода плагина
Допустим, у вас есть плагин, который подключает файл перевода с помощью load_plugin_textdomain('books', ...)
, но вам не нужен перевод для этого плагина. В этом случае вы можете выгрузить переводы, добавив следующий код в файл вашей темы или плагина:
add_action('init', 'my_unload_textdomain');
function my_unload_textdomain() {
unload_textdomain('books');
}
Этот код должен быть добавлен на хук init
, чтобы убедиться, что он срабатывает после того, как переводы плагина были загружены.
Пример 2: Отключение перевода WordPress
Если вам не нужен перевод интерфейса админки WordPress, вы можете отключить его следующим образом:
add_action('init', 'my_unload_textdomain');
function my_unload_textdomain() {
// 'default' - это идентификатор перевода для WordPress
unload_textdomain('default');
}
Этот код также добавляется в файл functions.php
вашей темы, и он позволяет сохранить переводы для плагинов, если они необходимы, при этом отключая перевод самого WordPress.
Использование фильтра override_unload_textdomain
Если вы хотите предотвратить выгрузку определенного текстового домена, можно использовать фильтр override_unload_textdomain
. Например, если вы хотите, чтобы ваш текстовый домен оставался загруженным, вы можете сделать это следующим образом:
add_filter('override_unload_textdomain', 'myplugin_override_unload_textdomain');
function myplugin_override_unload_textdomain($override, $domain) {
if ($domain === 'my-domain') {
// Предотвращает выгрузку текстового домена
$override = true;
}
return $override;
}
Действие unload_textdomain
Если вам нужно выполнить какие-то действия сразу перед выгрузкой текстового домена, используйте хук unload_textdomain
:
add_action('unload_textdomain', 'myplugin_unload_textdomain');
function myplugin_unload_textdomain($domain) {
// Здесь можно добавить код для обработки выгрузки текстового домена
}
Заключение
Функция unload_textdomain()
предоставляет разработчикам гибкость в управлении переводами в WordPress. Она позволяет эффективно контролировать, какие переводы загружаются и выгружаются, что может быть особенно полезно для улучшения производительности сайта. Используйте указанные примеры и фильтры, чтобы настроить управление переводами под ваши нужды.