什么是‘admin_action_’。$_Request[‘action’]挂钩用于?

时间:2011-02-26 作者:wyrfel

有一个动作挂钩在admin.php 调用\'admin_action_\'.$_REQUEST[\'action\']. 不幸的是,这对插件来说有点无用,因为它是在管理的最后触发的。php,在页面(甚至页脚)上加载所有内容之后。

有人知道它为什么在那里,为什么处于那个愚蠢的位置,以及是否有什么东西在内部使用它吗?

1 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

通过Trac的“注释”功能,you can see that this was added three years ago, 在请求之后a generic POST handler that plugins can use.

谷歌代码搜索告诉我at least Akismet uses this hook, 和it appeared there at the time it was introduced in core. 它起作用了by calling admin.php directly (而不是插件页面)。从那里开始it can just do a redirect at the end. 诀窍在于admin.php?action=your_action, 其他URL不能保证正常工作。

许多(但不是所有)管理页面包括admin.php, 作为一种初始化。在这种情况下,您的操作将在发送任何输出之前触发,因为管理页面包括admin-header.php 之后admin.php. 这不会适用于每个管理页面:并非所有页面都包括admin.php, 还有一些人有“流氓”的支票action 查询变量,并给您一个“是否确实要这样做?”警告(due to missing nonces?). For a plugin page admin.php does everything: 它显示标题(unless the noheader query variable is in the URL), 调用页面并显示页脚(除非调用exit() 在代码中!)。admin.php 然后打电话exit() 本身,所以admin_action_ 那里甚至没有叫胡克。

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?