我可以在激活插件之前加载文本域吗?

时间:2016-07-06 作者:Lupus

我正在编写一个插件,我刚刚添加了一个PHP最低版本的检查。我尝试输入错误消息,但无效。我翻译了插件中的每一个字符串,除了那一个之外,所有的东西都正常工作,所以错误总是用英语显示。这是我的代码:

/**
* Plugin Name: plugintest
* Description: test
* Version: 1.0
* Author: me
* Text Domain: plugintest
* Domain Path: /languages/
*/

add_action(\'plugins_loaded\', \'plugintest_load_plugin_textdomain\');

// Languages
function plugintest_load_plugin_textdomain() {
load_plugin_textdomain( \'plugintest\', false, dirname( plugin_basename( __FILE__ ) ) . \'/languages/\' );
}
// Check for required PHP version
if (version_compare(PHP_VERSION, \'5.4\', \'<\'))
{
     $phpoldmsg = __(\'This plugin requires PHP 5.4 or higher. Please upgrade the version of PHP installed on your server\', \'plugintest\');
     $phpoldmsg .= " (".PHP_VERSION.")";
     exit($phpoldmsg);
}
else{
    include \'plugintest.php\';//INCLUDE REST OF PLUGIN   
}
我想这是因为当消息显示时插件textdomain还没有加载,但我不知道如何解决这个问题。我在某个地方读到,通过在插件头中添加“文本域”和“域路径”,WP甚至可以在激活之前翻译字符串,但它似乎对我没有帮助。或者我应该使用比“plugins\\u loaded”更早的钩子吗?提前谢谢你

1 个回复
最合适的回答,由SO网友:bueltge 整理而成

您对php版本的检查不在单独的函数中。这就是你不能控制这个函数流的顺序的要点。

下面的示例源代码应该更清楚地了解堆栈。顺序取决于plugintest_init 作用您还可以使用相同的挂钩和不同的优先级,第三个参数add_action.

add_action( \'plugins_loaded\', \'plugintest_init\' );

function plugintest_init() {

    add_action( \'init\', \'plugintest_load_plugin_textdomain\' );
    add_action( \'admin_init\', \'plugintest_check_php_version\' );
}

function plugintest_load_plugin_textdomain() {

    // ...
}

function plugintest_check_php_version() {

    // ...
}
另一个提示是,源代码非常简单。一个类,OOP代码的结构和使用都要好得多。但在你的问题背景下,这可能更容易理解。

相关推荐

Problems with localization

我正在创建一个插件,我已经将:define (\'WPLANG\', \'it_IT\'); 进入wp-config.php 文件插件声明标题中的插件名称之后:* Text Domain: endpoint * Domain Path: /languages/ 对于加载域:add_action( \'plugins_loaded\', \'myplugin_load_textdomain\' ); function myplugin_load_textdoma