在我的插件中,我使用的是wp\\u ajax,当我用如下条件包装init函数调用时,此挂钩不起作用:
public function __construct(){
if( isset( $_GET["page"] ) && $_GET["page"] === \'edit-foo\' ){ <-- This line prevents the call \'wp_ajax_foo\' !
add_action( \'admin_init\', array($this, \'init\') );
}
}
init(){
... <- initalize $this->editable_item->item
add_action(\'wp_ajax_foo\',array( $this->editable_item->item, \'foo\' ) );
}
最合适的回答,由SO网友:J.BizMai 整理而成
由于foo是一个静态函数,您不需要指定对象,因此可以在条件之外使用它来正确加载它,如下所示:
public function __construct(){
if( isset( $_GET["page"] ) && $_GET["page"] === \'edit-foo\' ){
add_action( \'admin_init\', array($this, \'init\') );
}
add_action(\'wp_ajax_foo\',array( \'MyPlugin/Classes/MyClassWithFooFunction\', \'foo\' ) );
}
init(){
... <- initalize $this->editable_item->item
}