Включить создание группы для определенной роли пользователя в BuddyPress

BuddyPress предоставляет фильтр «bp_user_can_create_groups», ограничивающий возможность пользователя создавать группы. Ссылка – http://wordpress.org/support/topic/restrictallow-group-creation-by-user-role?replies=3#post-4617184 и http://etivite.com/api-hooks/buddypress/trigger/apply_filters/bp_user_can_create_groups/

Как я могу использовать этот фильтр, чтобы ограничить создание группы для определенной роли пользователя в BuddyPress? В настоящее время только администраторам разрешено создавать группы, и я также не хочу, чтобы каждый пользователь мог создавать группы.

Я добавил следующий код в bp-custom.php, но он не работает

function create_groups1( $can_create, $restricted=false ) {
// maybe we don't want to override if it's restricted?
if ( ! $restricted ){
    // get the logged in user's ID
    $user_ID = get_current_user_id();
    // some logic to determine if the current user can create a group
    $user1 = new WP_User( $user_ID );

    if ( !empty( $user1->roles ) && is_array( $user1->roles ) ) {
            $r=$user1->roles[0];
    }
    if (current_user_can('read')) {
        $r="subscriber";
    }
    if ( $r == "subscriber" || $r == "participant" ){
        // we will return this allowing them to create groups
        $can_create = true;
    }
}
return $can_create;
}
add_filter( 'bp_user_can_create_groups', 'create_groups1', 10, 2 );

person Eclectic Solutions    schedule 07.05.2014    source источник


Ответы (1)


Вам нужно написать функцию и прикрепить ее к хуку 'bp_user_can_create_groups'. Внутри вашей функции определите, хотите ли вы, чтобы текущий пользователь мог создавать группы и возвращать $can_create соответственно.

function bp_user_can_create_groups( $can_create, $restricted=false ){
    // maybe we don't want to override if it's restricted?
    if ( ! $restricted ){
        // get the logged in user's ID
        $user_ID = get_current_user_id();
        // some logic to determine if the current user can create a group
        if ( user_can_create_group( $user_ID ) ){
            // we will return this allowing them to create groups
            $can_create = true;
        }
    }
    return $can_create;
}
add_filter( 'bp_user_can_create_groups', 'bp_user_can_create_groups', 10, 2 );
person doublesharp    schedule 07.05.2014