如何使用ADD_ACTION(‘wp_ajax_[action name]’,...)对于特定的带有条件的页面?

时间:2017-12-08 作者:J.BizMai

在我的插件中,我使用的是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\' ) );
}

1 个回复
最合适的回答,由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
 }

结束