加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 删除插件的过滤器

发布时间:2020-12-13 16:04:31 所属栏目:PHP教程 来源:网络整理
导读:我有一个评论插件,可以覆盖特定帖子类型中的评论表单. 现在我正在试图分开评论和评论. 我的第一步是删除修改当前注释模板的过滤器,并在第二个注释表单中使用该过滤器. 该插件使用此代码(简化) final class DM_Reviews { public function hooks() { do_action
我有一个评论插件,可以覆盖特定帖子类型中的评论表单.
现在我正在试图分开评论和评论.

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

该插件使用此代码(简化)

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

如果有人可以让我朝着正确的方向解决问题,那将对我有所帮助.

解决方法

我认为您可以使用以下解决方案之一来实现此目标,具体取决于此插件实例化类的方式:

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,array( new DM_Reviews(),'reviews_form'));
  //or Targeting the specific instance,array( DM_Reviews::get_instance(),'reviews_form'));
}

希望它有所帮助,如果你遇到困难,请告诉我.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读