2016-04-28 12 views
4

Ich habe ein Review-Plugin, das das Kommentarformular in einem bestimmten Posttyp überschreibt. Jetzt versuche ich die Bewertungen und Kommentare zu trennen.Filter eines Plugins entfernen

Mein erster Schritt ist, den Filter zu entfernen, der die aktuelle Kommentarvorlage ändert, und diesen Filter in einem zweiten Kommentarformular zu verwenden.

Das Plugin verwendet diesen Code (vereinfacht)

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); 
    } 

} 

In meinem Kind Thema der function.php Datei, habe ich versucht, diese zu verwenden, aber es hat nicht funktioniert.

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

WP Codex

Wenn jemand mich in der richtigen Richtung, wie es zu lösen setzen kann, wäre es mir sehr helfen.

Antwort

1

Ich denke, dieses Ziel zu erreichen, eine der folgenden Lösungen mit auf dem Weg in Abhängigkeit dieses Plugin instanziiert die Klasse:

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')); 
} 

Hoffe, es hilft, lassen Ich weiß, wenn du nicht weiterkommst.

+0

Versucht es, aber das hat auch nicht funktioniert. :( – kiarashi

+0

@kiarashi pls überprüfen Sie den Namen der Funktion: "reviews_form" oder "review_form"? – iEmanuele

+0

Dank Ihnen, es hat funktioniert.: DI zuerst alle drei verwendet, aber dann habe ich jedes einzelne von ihnen versucht. Und das hat funktioniert : 'remove_filter ('comment_form_defaults', array (EDD_Reviews :: get_instance(), 'reviews_form'));' – kiarashi

0

Versuchen Sie folgendes:

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

Ich fürchte, ich habe einen Fehler erhalten, wenn ich es so benutze. 'Fataler Fehler: Aufruf zu undefinierter Methode DM_Reviews :: this()' – kiarashi

Verwandte Themen