我已经编写了一个使用特定第三方插件代码的自定义插件,所以我想声明我的插件依赖于此第三方插件,是否可能?解决这个问题的正常方法是什么?
Declare plugin dependency
1 个回复
SO网友:chrisguitarguy
这在核心是不可能的。有几种方法可以做到这一点。
1。钩入plugins_loaded
检查是否X
依赖插件存在
add_action(\'plugins_loaded\', \'wpse120377_load\');
function wpse120377_load()
{
if (!class_exists(\'Some_Class_From_Another_Plugin\')) {
// dependency not installed, bail
return;
}
// load the rest of your plugin stuff here
}
钩住plugins_loaded
重要的是:安装的每个插件都将在该点加载。只有在加载插件时(或之后),才能对依赖性进行准确检查。2。查看插件是否提供挂钩Posts 2 Posts. 它提供了一个称为p2p_init
它上膛后就会开火。如果你的依赖插件做了类似的事情,你不需要plugins_loaded
并进行检查。只需挂接插件init
操作(或其他)并从那里加载您的功能。
add_action(\'p2p_init\', \'wpse120377_load2\');
function wpse120377_load2()
{
// load your plugin
}
3。“善待用户”的方式如果你的依赖关系不存在,你的插件就无法运行。因此,对用户友好,并显示错误消息。admin_notices
这是一个很好的钩子。
add_action(\'plugins_loaded\', \'wpse120377_load3\');
function wpse120377_load3()
{
if (!class_exists(\'Some_Class_From_Another_Plugin\')) {
// dependency not installed, show an error and bail
add_action(\'admin_notices\', \'wpse120377_error\');
return;
}
// load the rest of your plugin stuff here
}
function wpse120377_error()
{
?>
<div class="error">
<p>
<?php _e(\'{PLUGIN NAME} requires {ANOTHER PLUGIN}. Please install it.\', \'wpse\'); ?>
</p>
</div>
<?php
}
结束