wp_download_language_pack()
云策文档标注
概述
wp_download_language_pack() 函数用于下载 WordPress 语言包。它检查语言包是否已安装,验证下载权限和可用性,并使用 Language_Pack_Upgrader 执行下载操作。
关键要点
- 函数接受一个必需参数 $download,表示要下载的语言代码。
- 返回值为字符串(成功下载或已安装的语言代码)或 false(失败)。
- 内部逻辑包括检查语言包是否已存在于 get_available_languages() 中。
- 使用 wp_is_file_mod_allowed() 验证文件修改权限。
- 通过 wp_get_available_translations() 确认语言包可下载。
- 依赖 Automatic_Upgrader_Skin 和 Language_Pack_Upgrader 类执行升级过程。
- 错误处理使用 is_wp_error() 检查结果。
代码示例
function wp_download_language_pack( $download ) {
// Check if the translation is already installed.
if ( in_array( $download, get_available_languages(), true ) ) {
return $download;
}
if ( ! wp_is_file_mod_allowed( 'download_language_pack' ) ) {
return false;
}
// Confirm the translation is one we can download.
$translations = wp_get_available_translations();
if ( ! $translations ) {
return false;
}
foreach ( $translations as $translation ) {
if ( $translation['language'] === $download ) {
$translation_to_load = true;
break;
}
}
if ( empty( $translation_to_load ) ) {
return false;
}
$translation = (object) $translation;
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$skin = new Automatic_Upgrader_Skin();
$upgrader = new Language_Pack_Upgrader( $skin );
$translation->type = 'core';
$result = $upgrader->upgrade( $translation, array( 'clear_update_cache' => false ) );
if ( ! $result || is_wp_error( $result ) ) {
return false;
}
return $translation->language;
}注意事项
- 函数在 WordPress 4.0.0 版本中引入。
- 相关函数包括 wp_is_file_mod_allowed()、wp_get_available_translations()、get_available_languages() 和 is_wp_error()。
- 被 edit_user() 函数使用,用于基于 $_POST 内容编辑用户设置。
原文内容
Download a language pack.
Description
See also
Parameters
$downloadstringrequired-
Language code to download.
Source
function wp_download_language_pack( $download ) {
// Check if the translation is already installed.
if ( in_array( $download, get_available_languages(), true ) ) {
return $download;
}
if ( ! wp_is_file_mod_allowed( 'download_language_pack' ) ) {
return false;
}
// Confirm the translation is one we can download.
$translations = wp_get_available_translations();
if ( ! $translations ) {
return false;
}
foreach ( $translations as $translation ) {
if ( $translation['language'] === $download ) {
$translation_to_load = true;
break;
}
}
if ( empty( $translation_to_load ) ) {
return false;
}
$translation = (object) $translation;
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$skin = new Automatic_Upgrader_Skin();
$upgrader = new Language_Pack_Upgrader( $skin );
$translation->type = 'core';
$result = $upgrader->upgrade( $translation, array( 'clear_update_cache' => false ) );
if ( ! $result || is_wp_error( $result ) ) {
return false;
}
return $translation->language;
}
Changelog
| Version | Description |
|---|---|
| 4.0.0 | Introduced. |