2016-04-28 36 views
4

我有一个覆盖特定后期类型的评论表单的评论插件。 现在我试图分开评论和评论。删除插件的过滤器

我的第一步是删除修改当前评论模板的过滤器,并在第二个评论表单中使用该过滤器。

插件使用该代码(简体)

final class DM_Reviews { 

    public function hooks() { 
     do_action_ref_array('dm_reviews_before_setup_actions', array(&$this)); 

     add_filter('comment_form_defaults', array($this, 'reviews_form'  ));   

     do_action_ref_array('dm_reviews_after_setup_actions', array(&$this)); 
    } 

    public function review_form($args) {  

      $form = 'plugin code to modify form'; 

     return wp_parse_args($form, $args); 
    } 

} 

在我的子主题的function.php文件,我试图用这一点,但它并没有奏效。

global $DM_Reviews; 
remove_filter('comment_form_defaults', array($DM_Reviews, 'reviews_form'),1); 

WP Codex

如果有人可以把我对如何解决这个问题的正确方向,这将帮助我很多。

回答

1

我想你可以实现这个目标,使用不同的方式通过以下方法解决一个这个插件实例化类:

if(class_exists('DM_Reviews')){ 
    //This should work in whatever case, not tested 
    remove_filter('comment_form_defaults', array('DM_Reviews', 'reviews_form')); 
    //or Instantiating a new instance, not tested 
    remove_filter('comment_form_defaults', array(new DM_Reviews(), 'reviews_form')); 
    //or Targeting the specific instance, not tested 
    remove_filter('comment_form_defaults', array(DM_Reviews::get_instance(), 'reviews_form')); 
} 

希望它能帮助,让我知道你是否被卡住了。

+0

试过了,但那也行不通。 :( – kiarashi

+0

@ kiarashi请检查函数的名称:“reviews_form”或“review_form”? – iEmanuele

+0

感谢你,它的工作原理:DI首先使用了所有三个,但后来我单独尝试了其中的每一个。 :'remove_filter('comment_form_defaults',array(EDD_Reviews :: get_instance(),'reviews_form'));' – kiarashi

0

试试这个:

$instance = DM_Reviews::this(); 
remove_filter('comment_form_defaults', array($instance, 'reviews_form')); 
+0

恐怕我收到错误时使用它。 '致命的错误:调用未定义的方法DM_Reviews :: this()' – kiarashi