解决 Rank Math SEO 插件不加载语言包的问题

自 Rank Math SEO v1.0.232 版本起,我们就发现 Rank Math SEO 插件不加载语言包的问题,即汉化包安装后并无效果。发现该问题后,第一时间向开发者反馈了,但直至 Rank Math SEO v1.0.241 仍未解决该问题。现在本文将自行修复该错误的方法分享一下,希望能帮助遇到该问题的站长。

错误的 localization_setup 函数导致的问题

public function localization_setup() {
$locale = get_user_locale();
$locale = apply_filters( ‘plugin_locale’, $locale, ‘rank-math’ ); // phpcs:ignore

unload_textdomain( ‘rank-math’ );
if ( false === load_textdomain( ‘rank-math’, WP_LANG_DIR . ‘/plugins/seo-by-rank-math-‘ . $locale . ‘.mo’ ) ) {
load_textdomain( ‘rank-math’, WP_LANG_DIR . ‘/seo-by-rank-math/seo-by-rank-math-‘ . $locale . ‘.mo’ );
}
load_plugin_textdomain( ‘rank-math’, false, rank_math()->plugin_dir() . ‘languages/’ );
}

在 rank-math.php 文件中,有如上代码(约503-512行),这段代码是一个典型的 WordPress 插件本地化(Localization)函数,用于加载插件的翻译文件(.mo 文件),以支持多语言功能。

其中 unload_textdomain( ‘rank-math’ ); 这一行是为了确保在重新加载翻译文件时不会出现冲突或重复加载的问题。调用 WordPress 的 unload_textdomain() 函数卸载之前已加载的 rank-math 插件的翻译文件。

但现在的问题是它的这个 Localization 函数写得有问题,语言包没有通过后面钩子加载成功。

解决方法

解决该问题,只需要将 unload_textdomain( ‘rank-math’ ); 这一行注释掉。

修改后的完整代码:

public function localization_setup() {
$locale = get_user_locale();
$locale = apply_filters( ‘plugin_locale’, $locale, ‘rank-math’ ); // phpcs:ignore

//unload_textdomain( ‘rank-math’ );
if ( false === load_textdomain( ‘rank-math’, WP_LANG_DIR . ‘/plugins/seo-by-rank-math-‘ . $locale . ‘.mo’ ) ) {
load_textdomain( ‘rank-math’, WP_LANG_DIR . ‘/seo-by-rank-math/seo-by-rank-math-‘ . $locale . ‘.mo’ );
}
load_plugin_textdomain( ‘rank-math’, false, rank_math()->plugin_dir() . ‘languages/’ );
}

提示:rank-math.php 文件位于 /wp-content/plugins/seo-by-rank-math 目录中。

修改后刷新

喜欢就支持一下点个赞吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容