2009-10-05 192 views

回答

7

基本上,它维护一个叫做$wp_filter的全局变量来保存相关数据。插件可以使用add_filter()等功能来注册。

在各个点(钩点),wordpress检查$wp_filter以查看是否有过滤器可以运行。

弄明白最简单的方法是看一看wp-includes/plugin.php,研究那里的代码(或挂接一个调试器,通过它一步,或设置firePHP并定期倾倒的东西了)

我没有专家,但我很好奇,所以我偷看了一下。如果我真的想知道更多,我会按照我的建议去做。

+0

哦,真棒。谢谢 – wnoveno 2009-10-05 06:32:10

+0

只需要注意,$ wp_filters的格式已经改变了几次(并且变量名也有),所以你应该总是使用API​​函数。 – 2009-10-05 07:00:37

0

如果你有任何类似.net等事件驱动编程的经验。你必须知道事件。把这些钩子当作事件来考虑......一个插件记录它想要启动一个函数的事件,事件对象会记住..然后当这个事件从WP中的某个地方被触发时,它将通过该数组找到它需要为这个特定事件调用的函数。