1

Buddypress 有一个组功能,我在其中结合了插件 BP Group Hierarchy,以便我可以根据用户角色创建组层次结构。

但是,该插件使用了 Buddpress 在 group-extension-api> 链接中教授的方法。

使用函数 bp_register_group_extension 注册组步骤,并调用 add_action。我试图通过没有成功删除该操作。因为我不太了解数组是如何工作的,即数组(&$extension,\'_register\'),所以我去搜索并找到了这篇文章

有一条线说

上述对象引用的方法回调的新格式始终是:类名,后跟方法名,然后是之前添加的数量(类名+方法名)。对于类,这允许您添加尽可能多的对象引用类并添加不会相互覆盖的方法。

但是我似乎无法删除该操作。

我试图通过在 function.php 中添加以下代码行来删除该操作

功能 remove_bp_hierarchy(){

如果(has_action('bp_actions')){

回声 $extension = 新的 BP_Groups_Hierarchy_Extension;

remove_action('bp_actions', array( &$extension, '_register'), 999);

} 别的 {

}

add_action('bp_init','remove_bp_hierarchy', 999);

我的 remove_action 有问题还是我使用了错误的方法?谢谢并恭祝安康。

## 更新

找到一个页面,在该页面中,我们可以看到钩子列表以及页面中的钩子函数。我看到有一个名为 _register 的函数,这是我正在寻找的函数。但是,班级地址总是在变化。我正在考虑使用找到的函数对其进行 preg_match 并在找到时将其删除。这是超重的。那么有没有其他方法可以去除呢?谢谢并恭祝安康。

4

1 回答 1

3

CodingBabyDotCom -

长话短说:你将不得不遍历$wp_filter数组来删除动作。

您需要对用于创建操作的 SAME 实例的引用,以便使用该remove_action函数将其删除。因此,您发布的功能不起作用,因为它使用的是新实例。

不幸的是bp_register_group_extension(),它只创建了一个临时实例,因此以后的函数不能引用它。

您评论中的代码将删除级别 8 的所有操作,这意味着所有组扩展。要仅删除您想要的,请遍历每个过滤器并检查其类型:

is_a( $wp_filter['bp_actions'][8][$key], 'BP_Groups_Hierarchy_Extension' )

于 2012-11-12T23:12:54.620 回答