Как сделать на сайте список пользователей

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

Получает пользователей в соответствии с переданными параметрами.

Работает на базе класса WP_User_Query<>

Возвращает

Массив . Массив IDs , объектов stdClass , WP_User<>, зависит от значения параметра fields .

Если 'fields' => 'all' (по умолчанию), или fields = all_with_meta , то будет возвращен массив объектов WP_User<>.

Если 'fields' => [ 'user_nicename' ] (вместо ``user_nicename'' вы можете передать любое имя столбца таблицы wp_users), то будет возвращен массив объектов stdClass, содержащий только эти поля.

Если 'fields' => 'ID' , будет возвращен массив идентификаторов.

Шаблон использования

Использование

Аргументы параметра $args

  • blog_id (число)
  • role (строка|массив)
  • role__in (массив)
  • role__not_in (массив)
  • nicename (строка)
  • nicename__in (строка[])
  • nicename__not_in (строка[])
  • login (строка)
  • login__in (строка[])
  • login__not_in (строка[])
  • include (массив)
  • exclude (массив)
  • meta_key (строка)
  • meta_value (строка)
  • meta_compare (строка)
  • meta_query (массив)
  • orderby (строка)
  • order (строка)
  • offset (число)
  • number (число)
  • paged (число)
  • search (строка)
  • search_columns (массив)
  • fields (строка/массив)
  • who (строка)
  • has_published_posts (логический/массив/строка)
  • date_query (массив)
  • count_total (логический)

Как сортировать полученный список пользователей?
Можно указать: include , nicename , email , url , registered , display_name , post_count , meta_value , meta_value_num , $meta_key (ключ массива запроса из meta_query).

Заметка: post_count работает только для типа записи post и не работает для произвольных типов записей (справедливо для версии WP 4.6). Обойти это не просто, возможно в будущем это измениться, а пока можно сделать так:

Пусть тип записи называется realty , тогда используйте такой хук прямо перед get_users() .

По умолчанию: 'user_login'

меню order(строка) Направление сортировки. ASC - от меньшего к большему (a-я). DESC - от большего к меньшему (я-а). offset(число) Отступ от начала полученного списка. Если указать 5, то 5 первых пользователей из полученного списка будут пропущены. number(число) Количество пользователей которых нужно получить. paged(число) Номер страницы пагинации. Используется в связке с параметром number .
По умолчанию: 1 search(строка)

Запрос для поиска пользователей. Поиск идет по точному вхождению. Когда нужно искать подстроку, используйте в запросе * . Например, если нужно найти пользователя с именем Иван Викторович , то запрос будет выглядеть так: Иван Викторович или Иван* или *Викторович или *Виктор*

Если параметр search_columns не указан, то будет проанализирован поисковой запрос и поиск будет проходить по подходящим колонкам. По умолчанию ищет в: e-mail, URL, ID или имя пользователя (отображаемое имя в поиске не участвует).

Массив названий колонок в которых искать запрос из параметра search.
Может быть: ID , login , nicename , email , url .

Когда нужно установить особый сет колонок, используйте фильтр user_search_columns:

По умолчанию: array()

Какие поля включить в возвращаемые данные о каждом пользователе.

  • all - все.
  • all_with_meta - будут получены еще и значение метаданных пользователя.
  • ID , display_name , user_login , user_nicename , user_email , user_url , user_registered - поля из таблицы wp_user - будут получены только указанные данные. Эти поля нужно указывать в массиве, даже если нужно получить всего одно поле, например: [ 'user_email' ] .

who(строка) Если указать authors , то будут показаны только авторы.
По умолчанию: '' (все пользователи) has_published_posts(логический/массив/строка)

Укажите название типа записи или массив названий. Тогда будут получены пользователи у которых есть опубликованные записи указанного типа.

Можно указать true , тогда будут получены пользователи у которых есть хоть одна опубликованная запись любого публичного типа.

Для этой функции параметр нельзя изменить и он всегда равен false. Используется в WP_User_Query<> для создания пагинации.

Считать сколько всего пользователей было найдено по запросу.

По умолчанию: false

Примеры

Этот пример найдет и выведет на экран всех пользователей у которых имя, ID или email равен "john".

Знак заменяет любое количество любых символов. Например, чтобы найти всех пользователей у которых ID, имя или email начинается с "jo", используем такой код:

Если поставить * в начало ( *jo ), то мы получим пользователей оканчивающихся на jo .

2. Выберите Списки пользователей.

3. Нажмите Создать список.



Откроется новая страница.


4) Указываем название списка, название может быть любое, главное, чтобы Вам было удобно.

6) Чтобы завершить и сохранить список, нажмите на Сохранить.

При возникновении вопросов, Вы всегда можете обратиться к нам в Онлайн-чат на сайте instaplus.me, мы всегда Вам поможем и дадим качественную квалифицированную помощь по устранению вашей возникшей проблемы.

Была ли эта статья полезной? Да Нет

К сожалению, мы не смогли помочь вам в разрешении проблемы. Ваш отзыв позволит нам улучшить эту статью.

Для реализации этой функции в таблице с пользователями должно быть поле, куда записывается время обновления информации.

Обновление информации

Это действие можно выполнить двумя способами. Простой вариант заключается в том, что информация обновляется при переходе по страницам. Но этот способ имеет недостаток. Пользователь может долго находиться на одной странице и не переходить по другим страницам. Тогда информация о том, что он на связи, не обновляестя и будет указано, что он вышел с сайта. А если увеличить время, в течении которого пользователь считается онлайн, то получится противоположная ситуация. Пользователь уже вышел с сайта, но ещё долго считается, что он в сети. Оптимально подобрать время достаточно сложно.

Более сложный способ состоит в использовании AJAX. На каждой странице сайта должен быть скрипт, который регулярно обновляет информацию в БД. При этом Вы точно знаете, через какие промежутки времени происходит обновление информации. Мы рассмотрим оба способа.

В базе данных дожна быть таблица users с информацией о пользователях. Добавим в неё поле online . В него будет записываться время обновления информации. Будем записывать его в фомате Unix, то есть в секундах. Поэтому поле имеет тип INT.

В строке 3 создаётся переменная $user_id , в которую записано id пользователя. На практике id записывается в сессию при авторизации, а в этом скрипте он должен быть получен из сессии.

В остальном скрипт понятен. В переменную $current записывается текущее время и отправляется в БД, в поле online . Так должны выглядеть все страницы сайта. Когда пользователь переходит на любую страницу, время в поле online обновляется.

Для второго способа Вы должны зать технологию AJAX. Вместо предложенного выше кода на каждой странице сайта должет быть скрипт, регулярно отправляющий запросы на сервер. Он выглядит так:

Если Вы изучали AJAX, то этот код должен быть Вам понятен. К запросу добавлено текущее время. Но оно добавлено не для использования на сервере, а для предотвращения кеширования запроса. Первый вызов функции производится в строке 17. Затем, в строке 18 она запускается в функции setInterval() . Так сделано для того, чтобы первый запрос отправлялся сразу после загрузки страницы. Ведь setInterval() первый раз запускает функцию только через указанный интервал. Приведённый скрипт отправляет запросы на сервер каждые 40 секунд.

На сервере запускается скрипт infonline.php. Он точно такой же, как на странице в первом примере. Только в нём не должно быть HTML тегов.

Вывод пользователей онлайн

Данные о том, кто находится онлайн, используется по-разному. На каких-то сайтах просто выводится списох всех пользователей онлайн. На других выводится разная информация о конкретных пользователях и указывается, находятся ли они на сайте. При любом варианте используется один принцип - нужно получить текущее время и сравнить со временем в базе данных. Если разница небольшая, значит пользователь онлайн. В нашем примере данные обновляются каждые 40 секунд. Значит при разнице в 50 секунд можно считать, что пользователь вышел с сайта. Если данные обновляются без AJAX, то интервал подобрать сложнее. Вы должны сами определить, сколько времени в среднем пользователь находится на одной странице.

В общих настройках WordPress есть возможность разрешить или запретить регистрацию новых пользователей сайта. Система ведет учёт всех новых пользователей и дает возможность их управления.

Подписчик – базовая роль пользователя

У подписчика практически нет прав на управление сайтом, кроме возможности получать новостную рассылку.

О форме регистрации


форма регистрации WordPress

форма регистрации WordPress

Адрес формы регистрации:

Процесс регистрации

Пользователь на странице формы регистрации должен указать произвольное имя латинскими буквами и указать рабочий email. Система отошлёт на указанный email письмо со ссылкой на подтверждение регистрации. Если пользователь перейдёт по ссылке указанной в письме, регистрация будет подтверждена. Других действий пользователю делать не нужно.

Форму регистрации в меню

В полном наполнении таблица имеет пять столбцов:

Настройки страницы Пользователи

Управление пользователями

Администратор сайта может в любое время удалить, изменить и добавить новых пользователей. Для этих целей есть кнопки вверху таблицы пользователей, а также появляются ссылки при наведении курсора на пользователя.

Экспорт пользователей

По умолчанию вы не можете скачать таблицу пользователей с сайта WordPress. Такого функционала нет. Однако вы всегда можете забрать пользователей сайта, скачав таблицу базы данных wp_user , через phpmyadmin. В этой таблице данные обо всех пользователях системы.

Вывод

По умолчанию система имеет все возможности регистрации и управления пользователями. Эти возможности несколько ограничены, но присутствуют на сайте и полностью готовы к работе сразу после общих настроек системы.

Читайте также: