当您看到一个钩子回调描述为UM_User_posts–>add_tab
, 你知道一定有UM_User_posts
某处的物体。如果add_tab()
如果已静态调用,则回调描述将为UM_User_posts::add_tab
.
现在,您需要访问UM_User_posts
插件正在使用的类。如何访问该实例?这通常是不可能的,所以您必须使用an ugly workaround.
然而,在你的情况下,有一个更好的方法。我在你的问题中遗漏了一个非常重要的信息:你想删除其回调的插件是什么?我猜你正在使用插件Ultimate Members.。)
现在,当我看到part where the instance for UM_User_posts
is created, 我注意到两件事:
我已经没有什么礼貌的词语来描述代码了。可能是我的错。:)但老实说,我不会在生产中运行该代码。
实例被分配给未声明的成员user_posts
班级的UM_API
, 类的实例放入一个名为$ultimatemember
. 因此,删除回调所需的实例位于$GLOBALS[\'ultimatemember\']->user_posts
.
这就引导我们找到了解决方案:
add_action( \'plugins_loaded\', function() {
remove_filter(
\'um_profile_tabs\',
[ $GLOBALS[\'ultimatemember\']->user_posts, \'add_tab\' ],
100
);
});
我还没有测试它,因为我真的不想在任何地方安装它,所以…祝你好运。:)