2016-04-28 9 views
4

特定のポストタイプのコメントフォームを上書きするレビュープラグインがあります。 今レビューとコメントを分けようとしています。プラグインのフィルターを削除する

私の最初のステップは、現在のコメントテンプレートを変更するフィルタを削除し、そのフィルタを2番目のコメントフォーム内で使用することです。

プラグインは、私がこれを使用しようとしたが、それは働いていなかった、私の子供のテーマのfunction.phpファイルでは(簡体字)、このコード

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

} 

を使用しています。

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 pls関数の名前を確認する: "reviews_form"または "review_form"? – iEmanuele

+0

あなたのおかげで、それは働いていました:DIはまず3つをすべて使いましたが、それぞれ別々に試しました。 : '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

関連する問題