首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未触发muplugins_loaded钩子

未触发muplugins_loaded钩子
EN

Stack Overflow用户
提问于 2015-08-28 21:29:55
回答 1查看 1.1K关注 0票数 0

我正在创建我的第一个Wordpress插件。我打算让它成为一个包装器,因此它应该在其他元素被初始化之前被初始化,并且在其他元素被最后确定之后完成。

我一直在研究动作这里,并认为已加载关机应该是适合我的场景的事件。

muplugins_loaded应该被执行

加载必须使用的插件之后

所以,我有这样的代码:

代码语言:javascript
复制
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

//Checking whether queries are to be saved
if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES ) {

    //definition of the WordpressBenchmarker class    

    function initWordpressBenchmark() {
        WordpressBenchmarker::initialize();
    }

    function finalizeWordpressBenchmark() {
        WordpressBenchmarker::finish();
    }

    add_action( 'muplugins_loaded', 'initWordpressBenchmark', 1 );
    add_action( 'shutdown', 'finalizeWordpressBenchmark', 20 );

}

我知道这个错误:

中的非对象调用成员函数finalize()。

这清楚地指向了这条线:

代码语言:javascript
复制
WordpressBenchmarker::finish();

相信我,这肯定意味着initWordpressBenchmark没有被执行。这使我认为插件没有执行,因为它不是一个必须使用的插件。我应该把它变成一个必须使用的插件吗?有更好的办法吗?作为另一种选择,我认为使用plugins_loaded钩子的值比任何其他值都小。在搜索plugins_loaded的引用之后,我发现优先级的最小数目是0。我想知道负价值是否优先

代码语言:javascript
复制
add_action( 'plugins_loaded', 'initWordpressBenchmark', -1 );

是个很好的解决办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-03 12:37:19

muplugins_loaded不触发是因为不一定要使用插件。让我的基准插件成为必须使用的插件是一种非常规的方法,因为基准测试不是定义上必须使用的特性,而是一个需要优化时需要使用的插件。所以,我决定不让我的插件成为必须使用的插件。相反,我修改了钩子,使其在plugins_loaded上触发,而不是在muplugins_loaded上触发。我添加了优先级为-1的钩子,并对shutdown钩子使用了低优先级。这显然解决了这个问题:

代码语言:javascript
复制
add_action( 'plugins_loaded', 'initWordpressBenchmark', -1 );
add_action( 'shutdown', 'finalizeWordpressBenchmark', 1001 );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32280028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档