我想知道WordPress核心文件如何处理WordPress的模块和核心之间的关系?我们都知道它使用add_action()和add_filter()来根据我们的插件中的意愿操作数据,并且有一个$tag参数,它是我们想要将我们的操作和筛选器连接到WordPress的核心函数的函数名。但是,操作和筛选器如何知道$tag参数(函数)在WordPress内核中的位置?
我开始阅读WordPress文件,但没有找到答案。
发布于 2019-01-05 08:41:03
我读过wordpress的全部核心文件。它是在核心文件夹中分割多个文件,实际上,这样做是非常明智的。
发布于 2019-01-02 21:13:05
我想你可能看错了。它不需要在核心的任何地方(或其他地方)查找$tag函数。该函数需要按当前顺序加载。只要在触发操作/筛选器时加载包含自定义函数的任何文件,那么您的函数就可以运行(因为它当时在内存中)--否则,您将得到一个错误,因为该函数将是未定义的。
这里有一个关于我所说的实际的讨论。如果您在主题的functions.php文件中应用了与plugins_loaded挂钩的内容,则您的函数将永远不会启动(即使它就在functions.php中),因为在加载functions.php文件时,该操作已经传递。你需要稍后的行动。
或者另一个例子是,您需要确保实际加载包含函数的文件,以便当您的操作或筛选器调用被触发时,包含函数的文件被加载到内存中。例如,如果您已经开发了一个由多个文件组成的插件,并且在加载的主插件文件中有一个可以触发"my_cool_filter_function()“的过滤器,但您从不费心按照顺序处理该文件的include()或require(),则该函数将引发一个未定义的错误,因为该函数在触发筛选器时不存在。但是,只要运行了include() (或require())来加载该文件,就可以运行my_cool_filter_function()了。
发布于 2019-01-02 21:09:42
函数名在PHP中必须是唯一的,所以如果某个函数被分配给给定的钩子,那么就没有什么可查找的了.只有一个函数有这样的名字-否则你会得到致命的错误.
https://wordpress.stackexchange.com/questions/324469
复制相似问题