如何在数组中获取多个操作挂钩

时间:2011-01-07 作者:Vikram

嗨,我正在写一个小插件,我从WordPress外部获得一些内容,我希望在添加新帖子、页面或评论时触发一个小脚本。此外,如果任何小部件、主题和插件被激活或取消激活。

我的猜测是,我应该为此使用动作挂钩,但因为有多个动作,所以如何在某个数组中获取所有这些动作。

class getStatic {

    var $_renderTasksOn =
        array(

              <!-- How do I call those actions in an array here -->

        )

function gerStatic() {

    <!-- Here goes the script to get external data -->
}

}
我对编程非常陌生,因此请帮忙编写代码。如何使用这些动作挂钩?

请帮忙。

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

如果你想挂接多个动作,你必须调用add_action 多次。然而,这并不难。让我们以您的插件类为例:

class WPSE6526_getStatic // Always prefix your plugin with something unique, like your name. Here I used the question number
{
    var $_renderTasksOn = array( \'wp_insert_post\', \'wp_insert_comment\', ... );

    function WPSE6526_getStatic()
    {
        // The constructor of this class, which will hook up everything
        // This is the \'trick\' to this question: a loop on your list and `add_action` for each item
        foreach ( $this->_renderTasksOn as $hookname ) {
            add_action( $hookname, array( &$this, \'getStatic\' ) );
        }
    }

    function getStatic()
    {
        // Your code
    }
}

add_action( \'plugins_loaded\', \'wpse6526_getStatic_init\' );
function wpse6526_getStatic_init()
{
    $GLOBALS[\'wpse6526_getStatic_instance\'] = new WPSE6526_getStatic();
}

结束

相关推荐

How do you debug plugins?

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