Вопрос или проблема
Я пытаюсь выяснить, активна ли учетная запись пользователя или нет, вне кода WP, просто глядя на базу данных. Это, безусловно, кажется плохой практикой, но я немного застрял в этой ситуации, и, в любом случае, мне интересно узнать, как WP определяет это.
После поиска в документации и в вопросах/ответах я не смог найти ничего четкого.
Что я наблюдал в базе данных:
- каждый активный пользователь имеет строку “PREFIX_capabilities” в
“PREFIX_usermeta” - каждая ожидающая учетная запись имеет строку “activation_key” в
“PREFIX_usermeta”
Какой индикатор мне следует использовать, чтобы определить, активна ли учетная запись? Мне кажется, что оба равнозначны, но я не уверен, что это детерминировано…
Не мог бы кто-нибудь подтвердить это или исправить меня, если я ошибаюсь?
Большое спасибо за любые советы,
Всего наилучшего,
Матиас
Просто проверьте, есть ли пустой user_activation_key
в таблице users
. Если он пустой, пользователь активен. Если заполнен, пользователь неактивен.
На самом деле, это в таблице user_meta.
select umeta_id, meta_value from [wp_prefix]usermeta where meta_value="hp_email_verify_key"
Чтобы разблокировать неподтвержденную учетную запись, нужно установить ее значение на NULL:
update [wp_prefix]usermeta set meta_value=NULL where umeta_id=[some_id]
Ответ или решение
Чтобы определить, активна ли учетная запись пользователя в WordPress, основываясь исключительно на данных из базы данных, нужно понимать, какие метаданные и таблицы используются системой для управления статусом учетных записей. Вот пошаговая инструкция с объяснением, какие аспекты нужно учитывать.
1. Таблица wp_users
В первую очередь, информация об учетных записях пользователей хранится в таблице wp_users
. Для определения статуса учетной записи необходимо обратить внимание на следующие поля:
- user_activation_key: Если это поле пустое, аккаунт считается активным. Если оно содержит значение, это может означать, что учетная запись ожидает активации.
Запрос для проверки этого поля может выглядеть следующим образом:
SELECT user_activation_key FROM wp_users WHERE user_login = 'example_user_login';
2. Таблица wp_usermeta
Дополнительно информация о метаданных пользователей хранится в таблице wp_usermeta
. Для определения статуса учетной записи нужно обратить внимание на следующие записи:
-
PREFIX_capabilities: Активные учетные записи имеют эту запись, которая указывает на разрешения пользователя. Обычно она будет содержать роль пользователя, например,
a:1:{s:10:"subscriber";b:1;}
.Запрос для проверки записи с ролями пользователей:
SELECT meta_value FROM wp_usermeta WHERE user_id = {user_id} AND meta_key = 'wp_capabilities';
Если запись с wp_capabilities
существует, это будет указывать на то, что учетная запись активна.
- activation_key: Если поле
activation_key
присутствует, оно обычно указывает на то, что учетная запись ожидает активации. Учетная запись может считаться неактивной, если это поле установлено.
Запрос для проверки поля activation_key
:
SELECT meta_value FROM wp_usermeta WHERE user_id = {user_id} AND meta_key = 'activation_key';
3. Пограничные ситуации и проверка
Теперь, когда мы знаем, какие записи проверять, давайте подытожим:
- Если
user_activation_key
(вwp_users
) пустое и вwp_usermeta
есть запись сwp_capabilities
, учетная запись активна. - Если поле
user_activation_key
заполнено, это указывает, что учетная запись неактивна. - Если
activation_key
вwp_usermeta
имеет значение, это также указывает на неактивную учетную запись.
4. Заключение
Подводя итог, для определения активности учетной записи пользователя в WordPress следует первым делом проверить поле user_activation_key
в таблице wp_users
. В случае, если оно пустое, следует сверить наличие записи с wp_capabilities
в таблице wp_usermeta
. Настоящее руководство поможет вам надежно установить статус учетной записи, основываясь только на данных из базы.
Если у вас возникли дополнительные вопросы или требуется уточнение конкретных аспектов работы с базами данных в WordPress, не стесняйтесь обращаться за помощью.