禁止非管理员删除 BuddyPress 群组

BuddyPress 是使用 WordPress 构建社区和社交网站的最简单和全面的解决方案。
有时,您可能不想让群组创建者删除自己的群组,所以您可以使用以下代码来阻止非管理员账号删除群组:

/**
 * 仅允许网站管理员删除群组
 * @link https://buddydev.com/buddypress/disable-buddypress-group-deletion-non-site-admin/
 */
function buddydev_disable_group_delete_by_non_site_admin() {
    if ( ! bp_is_group() || is_super_admin( ) ) {
        return ;
    }
    $parent = groups_get_current_group()->slug . '_manage';
    bp_core_remove_subnav_item( $parent, 'delete-group', 'groups' );
    //BuddyPress seems to have a bug, the same screen function is used for all the sub nav in group manage
    //so above code removes the callback, let us reattach it
    //if we don't , the admin redirect will not work
    add_action( 'bp_screens', 'groups_screen_group_admin' , 2 );
}
add_action( 'groups_setup_nav', 'buddydev_disable_group_delete_by_non_site_admin' );

将以上代码放在 bp-custom.php 或者您的主题里的 function.php 文件里即可。

原理

在上面的代码中,首先检查用户是否在群组页面上,如果当前用户不是网站管理员,那么就从群组管理页中去掉 “删除群组”。