WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

get_user_meta()WP 3.0.0

Получает отдельное мета поле или все мета поля указанного пользователя.

Если ключ не существует, функция вернет пустую строку или пустой массив в зависимости от значения параметра $single.

Это может вызвать неожиданное поведение в вашем коде, когда вы опустошаете метаполе пользователя, ваш код может попытаться использовать add_user_meta вместо update_user_meta, думая, что у пользователя еще нет меты.

Мета поля пользователей, это тоже самое что и произвольные поля для постов, только тут пост - это пользователь, а произвольное поле - мета поле пользователя. Мета поля хранятся в таблице wp_usermeta, которая является тем же самым, что и таблица wp_postmeta для постов.

Работает на основе: get_metadata()
1 раз — 0.000998 сек (медленно) | 50000 раз — 0.09 сек (скорость света) | PHP 7.1.2, WP 4.7.5

Хуков нет.

Возвращает

Разное.

  • Возвращает 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

#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
0

#2 Получение всех метаданных

Этот пример показывает что будет если $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] => и т.д...
)
*/
0

#3 Проверка, что мета-поле существует

// для single значения
$value = get_user_meta( 76, 'key_1', true );

if( '' !== $value ){
	// мета-поле есть
}

// для multiple значения
$value = get_user_meta( 76, 'key_1' );

if( [] !== $value ){
	// мета-поле есть
}

Список изменений

С версии 3.0.0 Введена.

Код get_user_meta() WP 6.4.3

function get_user_meta( $user_id, $key = '', $single = false ) {
	return get_metadata( 'user', $user_id, $key, $single );
}
10 комментариев
    Войти