Intereting Posts
Как подключиться к заглавию названия CPT? IP-адреса для блокировки, чтобы остановить автоматическое обновление WP? Тип сообщения запроса, созданный плагином Роли и возможности GUI, который не создает отдельную таблицу Запрос игнорирует параметр «исключить»? Изменение положения меню Genesis Сохранить jQuery UI Sortable в WordPress Показать панель администратора только для некоторых роли USERS Пользовательский тип сообщения не отображается Страница пользовательских настроек типа публикации, выберите страницу для отображения архива Установить тип содержимого в HTML для потерянного пароля только по электронной почте Группа Пользовательский тип сообщения на странице таксономии по его таксомологии не может захватить переменную PHP $ _POST Как запускать несколько веб-сайтов из одной установки WordPress обработка шаблонов и виджетов для пользовательских типов контента

запрашивать пользователей по ролям

У меня есть настраиваемый плагин, который запрашивает пользователей и usermeta, но теперь мне нужно отфильтровать админов из результатов. Очень упрощенная версия моего SQL-запроса:

SELECT * FROM usermeta LEFT JOIN users ON users.ID = user_id WHERE meta_key = 'last_name' AND user_role != 'admin' ORDER BY meta_value ASC LIMIT 0, 25 

user_role не является полем, и я видел, как он хранится как строка конфигурации, но я не вижу, как сделать эквивалентный запрос к этому. Я что-то упускаю?

Благодарю.

Вы можете использовать эту функцию:

 // get users with specified roles function getUsersWithRole( $roles ) { global $wpdb; if ( ! is_array( $roles ) ) $roles = array_walk( explode( ",", $roles ), 'trim' ); $sql = ' SELECT ID, display_name FROM ' . $wpdb->users . ' INNER JOIN ' . $wpdb->usermeta . ' ON ' . $wpdb->users . '.ID = ' . $wpdb->usermeta . '.user_id WHERE ' . $wpdb->usermeta . '.meta_key = \'' . $wpdb->prefix . 'capabilities\' AND ( '; $i = 1; foreach ( $roles as $role ) { $sql .= ' ' . $wpdb->usermeta . '.meta_value LIKE \'%"' . $role . '"%\' '; if ( $i < count( $roles ) ) $sql .= ' OR '; $i++; } $sql .= ' ) '; $sql .= ' ORDER BY display_name '; $userIDs = $wpdb->get_col( $sql ); return $userIDs; } 

3-я строка внутри функции не работала для меня, так как array_walk возвращает логическое значение вместо требуемого массива. Я изменил строку 3 на:

 $roles = array_map('trim',explode( ",", $roles )); 

И это работает для меня сейчас.