问题描述

我通过 Git 更新 WP 到版本 3.9.2(目前最新),工作正常。但是,在管理员中,它一直告诉我 「可用的新版本」 。经过一番挖掘,似乎与语言包相关。我已经将 WPLANG 设置为 nl_NL

wp-includes/update.php 文件中,wp_version_check()使用以下 URL 访问 WordPress 服务器以获取较新版本:

http://api.wordpress.org/core/version-check/1.7/?version=3.9.2&php=5.5.11&mysql=5.5.15&local_package=&blogs=1&users=2&multisite_enabled=0&locale=nl_NL

点击它,你会注意到它提供了一个响应与状态 「upgrade」,但版本是一样的!如果最后删除 locale 参数或将其留空 (URL 在下面),您将看到它将以 「latest」 的状态值回答,因此不会触发更新 nags 。

http://api.wordpress.org/core/version-check/1.7/?version=3.9.2&php=5.5.11&mysql=5.5.15&local_package=&blogs=1&users=2&multisite_enabled=0&locale=

我尝试刷新 WP 缓存 (更新瞬态),但没有更改。有人会在这里发生什么事吗?谢谢。

最佳解决方案

问题是,local_package 在 URL 中没有价值。

起初我以为这可能是一个 bug 。以前已经报道过类似的问题 (见 herehere

然后我在 comment in trac ticket 8729 上绊倒,用户 nbachiyski 解释了本地化应该如何工作:

There are two ways to localize WordPress:

  1. Drop some translation files.
  2. Install localized package.

Whenever possible we try to enforce the 2nd way.

So, here is how the whole thing works:

  1. Both the current locale and the current localized package, installed, are sent to the API.
  2. If a localized package for the user’s locale is available and the user doesn’t have the localized package, the user is prompted to upgrade or to hide updgrade.

您可以使用 install the Dutch version of WordPress 或隐藏其更新 (/wp-admin/update-core.php> 隐藏此更新) 。

次佳解决方案

丹的答案让我走上正确的道路。除了语言文件外,本地化 WP 包还会在 wp-includes/version.php 中创建 $wp_local_package 变量。如果设置了该变量,其值将被包含在版本检查 URL 中,然后响应将正确地说您使用的是最新版本:

http://api.wordpress.org/core/version-check/1.7/?version=3.9.2&php=5.5.11&mysql=5.5.15&local_package=nl_NL&blogs=1&users=2&multisite_enabled=0&locale=nl_NL

由于我通过 Git 更新 WP,因此安装本地化软件包不是一个选择。我手动更新语言文件。在这种情况下,为了摆脱更新,您可以在 wp-config.php 文件中自行定义 $wp_local_package 。这将使 WP 认为您始终运行最新的本地化软件包:

define('WPLANG', 'nl_NL');
$wp_local_package = WPLANG; // Don』t forget to manually update the language files now

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。