get_user_meta()
Получает отдельное мета поле или все мета поля указанного пользователя.
Если ключ не существует, функция вернет пустую строку или пустой массив в зависимости от значения параметра $single.
Это может вызвать неожиданное поведение в вашем коде, когда вы опустошаете метаполе пользователя, ваш код может попытаться использовать add_user_meta вместо update_user_meta, думая, что у пользователя еще нет меты.
Мета поля пользователей, это тоже самое что и произвольные поля для постов, только тут пост - это пользователь, а произвольное поле - мета поле пользователя. Мета поля хранятся в таблице wp_usermeta, которая является тем же самым, что и таблица wp_postmeta для постов.
Хуков нет.
Возвращает
Разное.
-
Возвращает
false, если параметр $user_id передан неверно. -
Если $single = true
string/array— если метаполе существует.''— когда метаполе не существует.
- Если $single = false
массив всех значений метаполя— когда метаполе существует.array()— когда метаполе не существует.
Если хранится число, то оно будет возвращено в виде числовой строки, например, '54'.
Использование
get_user_meta( $user_id, $key, $single );
- $user_id(число) (обязательный)
- ID пользователя, данные которого нужно получить.
- $key(строка)
- Ключ мета поля, данные которого нужно получить. Если оставить этот параметр пустым, то будут возвращены все мета поля пользователя.
По умолчанию: '' - $single(логический)
- Если установить в true, то функция вернет значение мета поля, если оставить false, то значение мета поля будет возращено в массиве. Этот параметр не имеет смысла, если параметр $key не был указан.
По умолчанию: false
Примеры
#1 Пример использования
Этот пример получит и затем выведет на экран Ник пользователя с ID = 9:
$user_id = 9; $key = 'nickname'; $meta_val = get_user_meta( $user_id, $key, true ); echo sprintf( 'Значение ключа %s у пользователя %d равно: %s', $key, $user_id, $meta_val ); // получим: // Значение ключа nickname у пользователя 9 равно: Enot
#2 Проверка, что мета-поле существует
// для single значения
$value = get_user_meta( 76, 'key_1', true );
if( '' !== $value ){
// мета-поле есть
}
// для multiple значения
$value = get_user_meta( 76, 'key_1' );
if( [] !== $value ){
// мета-поле есть
}
#3 Получение всех метаданных
Этот пример показывает что будет если $key оставить пустым, чтобы получить все метаданных указанного пользователя:
$all_meta_for_user = get_user_meta( 9 ); /* $all_meta_for_user будет содержать массив: Array ( [first_name] => Array ( [0] => Tom ) [last_name] => Array ( [0] => Auger) [nickname] => Array ( [0] => tomauger ) [description] => и т.д... ) */
Чтобы получить данные из этого примера, вам нужно получать первый элемент массива, так:
$last_name = $all_meta_for_user['last_name'][0];
Чтобы избежать этого неудобства, возможно лучше применить свою функцию к получаемому массиву, используя array_map():
$all_meta_for_user = array_map(
function( $a ){
return $a[0];
},
get_user_meta( $user_id )
);
/*
Теперь, $all_meta_for_user будет содержать такой массив:
Array (
[first_name] => Tom
[last_name] => Auger
[nickname] => tomauger
[description] => и т.д...
)
*/
Список изменений
| С версии 3.0.0 | Введена. |
Код get_user_meta() get user meta WP 6.9.1
function get_user_meta( $user_id, $key = '', $single = false ) {
return get_metadata( 'user', $user_id, $key, $single );
}