ограничить пользователя wordpress только для редактирования пользователей с одинаковым значением мета-ключа

У меня настроен сайт WordPress, внутри есть главный администратор, затем у меня есть диспетчер ролей пользователей, чтобы изменить роль подписчика, чтобы иметь возможность добавлять новых пользователей. Затем я успешно ограничил подписчика созданием новых пользователей только с новой ролью, которую я создал «игрок».

Затем я добавил настраиваемое поле для каждого пользователя под названием «игра». Подписчик может изменить только свое пользовательское поле и пользовательское поле «игрока». игрок не может изменить это значение.

Мне нужно изменить страницу «Все пользователи», когда подписчик входит в систему, чтобы отображать только список пользователей, которые имеют одинаковое значение поля cutom для «игры».

Я перепробовал все виды различных плагинов и попытался самостоятельно изменить код, но ничего не сработало :(

Любая помощь приветствуется

Энди


person AndrewBramwell    schedule 15.02.2013    source источник


Ответы (1)


Получил код из этого вопроса и ответа, Удалить возможность для других пользователей просматривать администратора в списке пользователей?.

Вам нужно будет немного настроить его, чтобы адаптировать к вашим ролям и возможностям, возможно, изменив значения meta_key и meta_value. Я добавил проверку для $pagenow, чтобы убедиться, что это сработает только в /wp-admin/users.php.

add_action( 'pre_user_query', 'filter_users_wpse_10742' );

function filter_users_wpse_10742( $user_search ) 
{
    global $pagenow;
    if( 'users.php' != $pagenow)
        return;

    $user = wp_get_current_user();

    if ( $user->roles[0] != 'administrator' ) 
    { 
        global $wpdb;

        $user_search->query_where = 
        str_replace('WHERE 1=1', 
            "WHERE 1=1 AND {$wpdb->users}.ID IN (
                 SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
                    WHERE {$wpdb->usermeta}.meta_key = '{$wpdb->prefix}user_level' 
                    AND {$wpdb->usermeta}.meta_value != 10)", 
            $user_search->query_where
        );
    }
}
person brasofilo    schedule 16.02.2013
comment
ах, я нашел несколько новых списков, не обращайте внимания на последний вопрос. Спасибо за помощь :) - person AndrewBramwell; 20.02.2013