如何在插件前定义常量

时间:2017-09-14 作者:gardelin

我有一个定义了常量的插件,我将此插件称为插件A:

if ( ! defined(\'BLA\')){
    define(\'BLA\', \'http://google.com); 
}
我想制作另一个插件插件B,它将在插件A之前定义常量BLA。这可能吗?我想Wordpress需要在插件A之前阅读插件B,但Wordpress阅读插件的顺序是什么?

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

在全局范围内定义常量,而不是使用WordPress挂钩,加载的第一个插件(参见Kero链接的答案)将有机会定义常量。

然而,您可以在插件中使用一些API挂钩,最早的可能是plugins_loaded, 然后,您可以为挂接到此中的回调设置优先级,以便在从插件A回调之前执行来自插件B的回调:

// code in plugin B
add_action(\'plugins_loaded\', function(){
    if ( !defined(\'BLA\') ) {
        define ( \'BLA\', \'http://google.com\' );
    }
}, 0); # <= 0 is the priority

// code in plugin A
add_action(\'plugins_loaded\', function(){
    if ( !defined(\'BLA\') ) {
        define ( \'BLA\', \'http://google.com\' );
    }
}); # <= priority is 10 by default.
然后,该常量将可以在连接到WordPress操作挂钩的任何范围内访问(init, plugins_loaded, wp, 等等…)。

// any other plugin
add_action(\'plugins_loaded\', function(){
    echo BLA, PHP_EOL; # "http://google.com" hopefully
}, 11);
希望这有帮助。

结束

相关推荐

搜索格式.php无法正常工作

我做了一个搜索表单。php文件来定制我阅读时的搜索小部件,但当我使用搜索小部件时,它并不能很好地进行搜索,它会在我正在编写的分类页面中进行讽刺。我的代码有什么问题吗?<form role=\"search\" method=\"get\" id=\"searchform\" class=\"searchform\" action=\"<?php esc_url( home_url( \'/\' ) ); ?>\"> <div>