删除在WordPress主题中不起作用的动作()

删除在WordPress主题中不起作用的动作(),wordpress,Wordpress,我的一个插件有这样的编码 Class Afke{ public function __construct() { add_action( 'init', array( $this, 'setup' ), -1 ); } function setup() { add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) ); } } 我尝试通过添加以下代码来删除theme functions.php中的“add_m

我的一个插件有这样的编码

Class Afke{
public function __construct() {
    add_action( 'init', array( $this, 'setup' ), -1 );
}

function setup() {
    add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
}
}
我尝试通过添加以下代码来删除theme functions.php中的“add_meta_box”

function remove_thematic_actions(){
 $bcatcf = new Afke();
remove_action( 'add_meta_boxes', array( $bcatcf, 'add_meta_boxes' ));
//remove_action( 'add_meta_boxes', 'add_meta_boxes' );
}

add_action('init','remove_thematic_actions');
但无法删除此操作。请推荐我。

您使用过

add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
Afke
类中,但是没有这样的函数
add\u meta\u box
。像这样使用你的功能

Class Afke{
  public function __construct() {
      add_action( 'init', array( $this, 'setup' ), -1 );
  }

  function setup() {
      add_action( 'add_meta_boxes', array( $this, 'my_meta_box_function' ) );
  }

  function my_meta_box_function() {
    // do your things here
  }
}
为了消除这种行为,你需要使用

function remove_thematic_actions(){
  $bcatcf = new Afke();
  remove_action( 'add_meta_boxes', array( $bcatcf, 'my_meta_box_function' ));
}

add_action('init','remove_thematic_actions');

将原始实例分配给变量,而不是创建新实例,这样可以将其作为目标:

Class Afke2{
    public function __construct() {
        add_action( 'init', array( $this, 'setup' ), -1 );
    }

    function setup() {
        add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
    }

    function add_meta_boxes()
    {
        add_meta_box(
            'test_metabox',
            __( 'Test meta box' ),
            function() { echo 'Hello world!'; },
            'post'
        );
    }
}
$myAfke = new Afke2;
然后,在其他地方,在另一个插件或主题的
functions.php

function remove_thematic_actions(){
    global $myAfke;
    remove_action( 'add_meta_boxes', array( $myAfke, 'add_meta_boxes' ));
}
add_action('init','remove_thematic_actions');

你好,Huseying Babal:谢谢你的回复。但它不起作用。您可以看到安装程序是一个函数,但它没有有效的回调。@Huseying Babal:类名Afke在插件文件中。所以我不能在那里添加任何函数。它是哪个插件?它是你的吗?不,它是一个自定义插件。因此,它们可能随时更新。这就是为什么我需要添加我的theme functions.php。插件中如何实例化类
Afke