2016-04-28 39 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