在 WordPress 6.7 版本中,新增了一项严格的翻译加载检查机制。此机制会在插件或主题尝试在错误的时机加载翻译时抛出 PHP 通知,提示开发者进行修正。常见的错误之一就是在 init 钩子之前调用 load_plugin_textdomain(),这会导致 PHP 提示:
Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the limit-login-attempts-reloaded domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in wp-includes/functions.php on line 6099
_load_textdomain_just_in_time 函数在 WordPress 中用于加载翻译文件。当插件或主题在 init 钩子之前调用翻译加载时,会触发该通知。WordPress 6.7 版本要求翻译加载在 init 钩子或之后的钩子中进行,确保插件和主题都已经完全初始化,避免加载顺序的问题。
为什么会出现这个问题?
WordPress 6.7 引入了更加严格的翻译加载机制。如果插件或主题的代码在 WordPress 初始化时过早地尝试加载翻译文件,WordPress 会发出警告。翻译加载应该等到 WordPress 初始化完毕,才能确保所有的主题和插件文件已正确加载。
解决方法:将 load_plugin_textdomain() 放入 init 钩子中
为了避免在 WordPress 初始化之前触发翻译加载,我们需要确保 load_plugin_textdomain() 被放置在正确的钩子上,推荐使用 init 钩子。下面是详细的步骤说明。
步骤一:检查翻译加载的代码
在你的插件或主题中,找到 load_plugin_textdomain() 的调用。如果它在不合适的地方被调用(例如在 wp_loaded 或 plugins_loaded 等早期钩子中),那么就需要进行调整。
步骤二:调整翻译加载的时机
插件中的翻译加载:
如果你正在开发一个插件,确保翻译加载代码位于 init 钩子中。例如:
function load_xintheme_plugin_textdomain() {
load_plugin_textdomain( 'xintheme-textdomain', false, plugin_dir_path( __FILE__ ) . 'languages' );
}
add_action( 'init', 'load_xintheme_plugin_textdomain' );
说明:
plugin_dir_path( __FILE__ ) 获取当前插件的路径,这样可以确保翻译文件位于插件的 languages 文件夹中。
add_action( 'init', 'load_my_plugin_textdomain' ) 确保翻译加载操作在 init 钩子时进行,从而避免过早加载翻译文件。
主题中的翻译加载:
如果你在开发WordPress主题,确保翻译加载在 after_setup_theme 钩子中进行:
function modular_theme_setup() {
load_theme_textdomain( 'modular_theme', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'modular_theme_setup' );
说明:
get_template_directory() 获取当前主题的路径。
add_action( 'after_setup_theme', 'modular_theme_setup' ) 确保主题的翻译在主题初始化后加载。
WordPress 6.7 版本对翻译加载时机进行了严格的要求,确保翻译文件加载在适当的钩子中。如果你遇到翻译加载过早的问题,可以通过将 load_plugin_textdomain() 或 load_theme_textdomain() 调用移动到 init 钩子后解决。通过合理安排加载顺序,可以避免不必要的 PHP 通知,确保你的WordPress插件和WordPress主题能够正常加载翻译文件。
新主题官方微信公众号
扫码关注新主题(XinTheme)官方公众号,本站动态早知道。
发布本站最新动态(新主题发布、主题更新)和WordPress相关技术文章。