如何从一个插件中调用另一个插件中的函数?

时间:2012-06-30 作者:Graham

我在管理选项面板中有一个用于事件的基本插件。

我想调用来自不同社交媒体插件的函数(Mingle). 我可以在主题中调用插件函数,但不能在其他插件的核心文件或其他插件的管理面板中调用。

我尝试了包含其他插件的文件,在主题函数文件中添加了一个挂钩,add_action, add_filter, init 等等,但我不知道这些操作的第一个参数是什么,因为我希望将该函数从另一个插件插入到特定的管理页面中。

唯一有效的解决方案是合并两个插件的代码,尽管没有更简单的方法似乎很奇怪。

2 个回复
SO网友:noquierouser

也许您应该尝试使用plugins_loaded 行动

插件A

class PluginA {
  public function func_a() {
    // do stuff
  }
}
插件B
class PluginB {
  function functB() {
    if (class_exists(\'PluginA\')) {
      //do stuff that depends of PluginA
    }
  }
}

add_action(\'plugins_loaded\', \'call_plugin_a_using_plugin_b\');
function call_plugin_a_using_plugin_b() {
  PluginB::functB();
}
According to the Codex, 这个plugins_loaded 操作在加载所有插件后激发,因此确保在从其他插件调用函数之前加载所有插件可能是一种方法。

SO网友:Ethan O\'Sullivan

要从一个插件调用另一个插件中的一个函数(inception?),您可以尝试以下登录:

您可以在执行任何其他操作之前先检查所需的函数。

插件A:

function from_plugin_alpha( some_thing ) {
    // do stuff
}
插件B:
function from_plugin_bravo() {
    if ( !function_exists( \'from_plugin_alpha\' ) ) {
        return;
    }
    from_plugin_alpha( some_thing );
}
这将在执行自定义代码之前检查函数是否存在。

结束

相关推荐

从非核心php文件访问BloInfo、Get_Option和plugins_url

我正在创建一个插件,插件目录中有一个php文件,可以通过自定义重写url直接访问该文件。我需要这个文件能够使用标题中提到的三个功能。目前,我正在包括wp负载。php文件,它使我能够访问所有这些函数。然而,我一直在读到不应该包括wp负载,因为它可能不总是在同一个位置,而且它包括可能不需要的wordpress文件。这就是我如何包含wp负载:$wp_base = explode($_SERVER[\'PHP_SELF\'], $_SERVER[\'SCRIPT_FILENAME\']); require