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