Declare plugin dependency

时间:2013-10-28 作者:Yoga

我已经编写了一个使用特定第三方插件代码的自定义插件,所以我想声明我的插件依赖于此第三方插件,是否可能?解决这个问题的正常方法是什么?

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
}

结束

相关推荐