在 WordPress 6.7 版本中,新增了一項嚴格的翻譯加載檢查機制。此機制會在插件或主題嘗試在錯誤的時機加載翻譯時拋出 PHP 通知,提示開發(fā)者進行修正。常見的錯誤之一就是在 init 鉤子之前調(diào)用 load_plugin_textdomain(),這會導(dǎo)致 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 函數(shù)在 WordPress 中用于加載翻譯文件。當插件或主題在 init 鉤子之前調(diào)用翻譯加載時,會觸發(fā)該通知。WordPress 6.7 版本要求翻譯加載在 init 鉤子或之后的鉤子中進行,確保插件和主題都已經(jīng)完全初始化,避免加載順序的問題。
為什么會出現(xiàn)這個問題?
WordPress 6.7 引入了更加嚴格的翻譯加載機制。如果插件或主題的代碼在 WordPress 初始化時過早地嘗試加載翻譯文件,WordPress 會發(fā)出警告。翻譯加載應(yīng)該等到 WordPress 初始化完畢,才能確保所有的主題和插件文件已正確加載。
解決方法:將 load_plugin_textdomain() 放入 init 鉤子中
為了避免在 WordPress 初始化之前觸發(fā)翻譯加載,我們需要確保 load_plugin_textdomain() 被放置在正確的鉤子上,推薦使用 init 鉤子。下面是詳細的步驟說明。
步驟一:檢查翻譯加載的代碼
在你的插件或主題中,找到 load_plugin_textdomain() 的調(diào)用。如果它在不合適的地方被調(diào)用(例如在 wp_loaded 或 plugins_loaded 等早期鉤子中),那么就需要進行調(diào)整。
步驟二:調(diào)整翻譯加載的時機
插件中的翻譯加載:
如果你正在開發(fā)一個插件,確保翻譯加載代碼位于 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 鉤子時進行,從而避免過早加載翻譯文件。
主題中的翻譯加載:
如果你在開發(fā)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 版本對翻譯加載時機進行了嚴格的要求,確保翻譯文件加載在適當?shù)你^子中。如果你遇到翻譯加載過早的問題,可以通過將 load_plugin_textdomain() 或 load_theme_textdomain() 調(diào)用移動到 init 鉤子后解決。通過合理安排加載順序,可以避免不必要的 PHP 通知,確保你的WordPress插件和WordPress主題能夠正常加載翻譯文件。
新主題官方微信公眾號
掃碼關(guān)注新主題(XinTheme)官方公眾號,本站動態(tài)早知道。
發(fā)布本站最新動態(tài)(新主題發(fā)布、主題更新)和WordPress相關(guān)技術(shù)文章。