我在文件夹中开发了一个具有以下结构的自定义插件:
wp-content
--- plugins
------ my-plugin
--------- languages
------------ po and mo files
--------- my-plugin.php
我把它国际化了,翻译都很成功。现在,我需要使用以下结构使该插件成为必须使用的插件:
wp-content
--- mu-plugins
------ my-plugin
--------- languages
------------ po and mo files
------ my-plugin.php
(据我所知,主插件文件必须直接放在要执行的mu plugins目录中)。
由于主插件文件的位置(不在my-plugin
文件夹,但在wp-content/mu-plugins
文件夹),并且我的所有功能都正常工作,除了编程的国际化。我不明白我还缺少什么。以下是我所做的:
主插件文件中的代码,当它仍然是一个普通插件时,本地化工作正常:
// Callback loading the textdomain \'my-plugin\', defined as such in header of main plugin file
public function my_plugin_load_plugin_textdomain() {
load_plugin_textdomain(
\'my-plugin\',
false,
basename( dirname( __FILE__ ) ).\'//languages/\'
);
}
// Hook of it
add_action(
\'plugins_loaded\',
array( $this, \'my_plugin_load_plugin_textdomain\' )
);
在这里,一切都正常工作(我将整个主插件文件编码在一个类中,这就是为什么
array( $this, callback )
以上)。切换到mu插件时,我尝试了:
// Callback loading the textdomain \'my-plugin\', defined as such in header of main plugin file
public function my_plugin_load_muplugin_textdomain() {
load_muplugin_textdomain(
\'my-plugin\',
\'my-plugin/languages\'
);
}
// Hook of it
add_action(
\'muplugins_loaded\',
array( $this, \'my_plugin_load_muplugin_textdomain\' )
);
即:
将回调中调用的函数从load_plugin_textdomain()
到load_muplugin_textdomain()
, 以及如上所述的调整参数。
动作挂钩已从plugins_loaded
到muplugins_loaded
已更改主插件文件头中的域路径/languages
到/my-muplugin/languages
然而,我的mu插件的本地化仍然不起作用。我也重新检查了区域设置,并且使用了正确的区域设置(例如,当我将wp admin中的用户语言从德语更改为英语(UK)时,我的翻译文件名为my-plugin-en_GB.mo
未应用,所有内容仍以德语显示)。
帮助