我目前正在研究两个插件。每个函数都有一个名为plugin_classes
它将其他类附加到基类。
这两个插件都有init
和hooks
功能。
在第一次通话中$this->plugin_classes()
发生在hooks
函数,而在init
作用
在这两种情况下hooks
函数调用init
功能。
看来除了使用init
这些类在钩子中的类之后稍微添加(可能)。我有什么遗漏吗?
我目前正在研究两个插件。每个函数都有一个名为plugin_classes
它将其他类附加到基类。
这两个插件都有init
和hooks
功能。
在第一次通话中$this->plugin_classes()
发生在hooks
函数,而在init
作用
在这两种情况下hooks
函数调用init
功能。
看来除了使用init
这些类在钩子中的类之后稍微添加(可能)。我有什么遗漏吗?
如果没有一些额外的代码,很难回答这个问题,因为这些代码不是WordPress的核心功能,可以做任何事情。基于前面的问题,我假设您所指的插件之一是LiquidChurch/lqd-messages plugin 我在main plugin file. 即使这不是正确的文件,希望解释这些文件的执行顺序将有助于解释何时调用对象。
在GC_Sermons_Plugin->hooks
函数已添加到plugins_loaded
在…上L321.tgmpa_register 运行函数register_required_plugin
, 检查插件的依赖项是否已安装(使用TGMPA) 在…上L186.GC_Sermons_Plugin->init 到init
钩住L189.
GC_Sermons_Plugin->plugin_classes
被称为,在plugins_loaded
钩住L190.plugins_loaded
发生在之前init
(不要混淆GC_Sermons_Plugin->init
, 因为这可能被称为你想要的任何东西)。正在调用的代码GC_Sermons_Plugin->plugin_classes
正在WordPress挂钩中的此文件中发生plugins_loaded
, 以及GC_Sermons_Plugin->init
正在WordPress中运行函数init
钩这意味着GC_Sermons_Plugin->plugin_classes
之前已调用GC_Sermons_Plugin->init
.
呼叫LiquidChurch_Functionality->hooks
在WordPress中\'plugins_loaded
钩住L440LiquidChurch_Functionality->init 在WordPress中\'init
挂钩LiquidChurch_Functionality->init 它调用LiquidChurch_Functionality->plugin_classes
.
plugins_loaded
发生在之前init
WordPress内部。GC_Sermons_Plugin->plugin_classes
来自示例File 1 将代码添加到WordPress挂钩init
- 这可以在File 2, 它也在WordPress挂钩中运行init
.据我回忆,WordPress中的插件大部分时间是按字母顺序加载的,但这就是使用priority
的参数add_action
和add_filter
这很重要。而不是依赖以下事实plugins_loaded
发生在之前init
, 最好依赖以下事实:您想要运行的所有代码init
按您希望的顺序发生。我从第一个插件中看到,有多个composer依赖项,因此这些外部代码库可以在WordPress执行的任何时候调用代码的某些部分。有些可能是在你想要的之前或之后。
如果我们改为这样做:
// Plugin 1
add_action( \'init\', array( $this, \'plugin_classes\' ), 10 );
// Plugin 2
add_action( \'init\', array( $this, \'plugin_classes\' ), 20 );
我们将使用priority参数来表示以优先级10运行此代码,该优先级在优先级20之前执行-确保插件1的代码始终在同一挂钩上执行,并且在插件2执行之前执行。这通常是最好的方法,而不是依赖于被激发的挂钩顺序,或者插件文件夹名称的字母排序顺序。总体而言,给定的实现没有什么问题,您只需小心确保代码按照预期的顺序运行,以避免冲突或奇怪的场景。希望这个解释有帮助!
我能够成功使用wp.hooks.applyFilters() 和wp.hooks.addFilter(), 但我无法使用wp.hooks.addAction(). 但是console.log() 在某个操作的回调中运行良好。这是我的代码:import { createHooks } from \'@wordpress/hooks\'; let globalHooks = createHooks(); const Header = () => { r