WordPress как на ладони
Дешевый WordPress пакет для разработки Хостинг, VPS/VDS и отдельные сервера только на SSD дисках. 7 дней бесплатного тестирования.

get_user_by() WP 2.8

Получает пользователя по указанному полю и значению этого поля (по ID, логину, почте).

Это pluggable функция — т.е. её можно заменить из плагина. Это значит, что она будет работать (подключается) только после подключения всех плагинов, а до этого момента функция еще не определена... Поэтому нельзя вызывать эту и зависящие от неё функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded или позднее, например хук init.

Замена функции (переопределение) — в плагине можно создать функцию с таким же названием, тогда она заменит текущую функцию.

Является основой для: username_exists(), get_userdata(), email_exists()
Работает на основе: WP_User()
✈ 1 раз = 0.001296с = очень медленно | 50000 раз = 3.27с = быстро

Хуков нет.

Возвращает

WP_User/false. Объект данных о пользователе, если указанное поле не существует, то вернет false.

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

$user = get_user_by( $field, $value );
$field(строка) (обязательный)

Поле, по которому нужно получить пользователя. Может быть:

  • id или ID с WP 4.4. - по полю ID
  • slug - по полю user_nicename
  • email - по полю user_email
  • login - по полю user_login

По умолчанию: нет

$value(строка/число) (обязательный)
Значение указанного поля.
По умолчанию: нет

Примеры

#1. Получим пользователя по email

Пример, родной функция WP, в которой используется get_user_by(). Функция получает пользователя по e-mail адресу, если пользователь существует, то будет возвращен его ID.

function email_exists( $email ) {
	if ( $user = get_user_by('email', $email) )
		return $user->ID;

	return false;
}

#2. Получим пользователя по id

$user = get_user_by('id', 1);

$user будет содержать:

WP_User Object
(
	[data] => stdClass Object
		(
			[ID] => 1
			[user_login] => kama
			[user_pass] => $P$Bu354452345AfDy0g3453245345345J/
			[user_nicename] => kama
			[user_email] => tggagga@mail.ru
			[user_url] => 
			[user_registered] => 2010-03-26 09:27:40
			[user_activation_key] => 
			[user_status] => 
			[display_name] => Kama
		)

	[ID] => 1
	[caps] => Array
		(
			[administrator] => 1
		)

	[cap_key] => wp_capabilities
	[roles] => Array
		(
			[0] => administrator
		)

	[allcaps] => Array
		(
			[switch_themes] => 1
			[edit_themes] => 1
			[activate_plugins] => 1
			[edit_plugins] => 1
			[edit_users] => 1
			[edit_files] => 1
			[manage_options] => 1
			[moderate_comments] => 1
			[manage_categories] => 1
			[manage_links] => 1
			[upload_files] => 1
			[import] => 1
			[unfiltered_html] => 1
			[edit_posts] => 1
			[edit_others_posts] => 1
			[edit_published_posts] => 1
			[publish_posts] => 1
			[edit_pages] => 1
			[read] => 1
			[level_10] => 1
			[level_9] => 1
			[level_8] => 1
			[level_7] => 1
			[level_6] => 1
			[level_5] => 1
			[level_4] => 1
			[level_3] => 1
			[level_2] => 1
			[level_1] => 1
			[level_0] => 1
			[edit_others_pages] => 1
			[edit_published_pages] => 1
			[publish_pages] => 1
			[delete_pages] => 1
			[delete_others_pages] => 1
			[delete_published_pages] => 1
			[delete_posts] => 1
			[delete_others_posts] => 1
			[delete_published_posts] => 1
			[delete_private_posts] => 1
			[edit_private_posts] => 1
			[read_private_posts] => 1
			[delete_private_pages] => 1
			[edit_private_pages] => 1
			[read_private_pages] => 1
			[delete_users] => 1
			[create_users] => 1
			[unfiltered_upload] => 1
			[edit_dashboard] => 1
			[update_plugins] => 1
			[delete_plugins] => 1
			[install_plugins] => 1
			[update_themes] => 1
			[install_themes] => 1
			[manage_downloads] => 1
			[manage_database] => 1
			[democracy_admin] => 1
			[update_core] => 1
			[list_users] => 1
			[remove_users] => 1
			[add_users] => 1
			[promote_users] => 1
			[edit_theme_options] => 1
			[delete_themes] => 1
			[export] => 1
			[administrator] => 1
		)

	[filter] => 
)

Код get_user_by: wp-includes/pluggable.php VER 4.9.8

<?php
function get_user_by( $field, $value ) {
	$userdata = WP_User::get_data_by( $field, $value );

	if ( !$userdata )
		return false;

	$user = new WP_User;
	$user->init( $userdata );

	return $user;
}

Cвязанные функции

Из метки: Пользователи (_user)

Еще из раздела: Остальное

5 комментов
  • Игнат

    Обнаружил что внутри плагина функция не определена sad

    Fatal error: Call to undefined function get_user_by()

    В последствии обнаружил что еще целая пачка связных функций выдают тот же результат при использовании в плагине sad
    В общем ну никак не определится моему плагину кто его юзает АДМИН или АВТОР smile что не пытался применить - все undefined sad
    При этом в теме использую эти же функции все ОК. Видимо плагин как то подгружается раньше файла инициализации функции???

    Были проверены так жеж функции:
    user_can()
    is_super_admin()
    Они тоже были undefined

    Ответить4.5 года назад #
    • Kama6918

      Как плагин подключается. Код просто исполняется в файле плагина или через хук? Вообще функции ВП подгружаются раньше плагинов, по идее должно все работать...

      Ответить4.5 года назад #
      • Игнат

        Специально пробовал такой вариант:

        <?php
        /*
        Plugin Name: .............
        Plugin URI: ........
        Description: ........
        Version: 1.0
        */
        
        global $user_ID;    
        if( is_super_admin( $user_ID ) ){....

        В результате получаю:

        Fatal error: Call to undefined function wp_get_current_user() in Z:\home\artilkom\www\wp-includes\capabilities.php on line 1511
        1
        Ответить4.5 года назад #
        • Kama6918

          Глянул я как там дела обстоят. Вот чего понял: wp_get_current_user() находится в /wp-includes/pluggable.php. Этот файл подключается сразу после загрузки всех плагинов. Сделано это для того, чтобы плагины могли переопределять эту функцию и так заменять её своей.

          Чтобы все работало, нужно использовать проверку после загрузки всех плагинов. Иначе говоря, функцию проверок нужно цеплять на хук plugins_loaded или более поздние хуки: setup_theme, after_setup_theme, init, wp_loaded и другие.

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

          <?php
          /*
          Plugin Name: .............
          Plugin URI: ........
          Description: ........
          Version: 1.0
          */
          
          function foo_function(){
          	global $user_ID;
          
          	if( is_super_admin( $user_ID ) )
          		die( '111111' );
          	else
          		die( '22222222' );
          }
          add_action( 'plugins_loaded', 'foo_function' );
          1
          Ответить4.5 года назад #
          • Игнат

            Да я понимал логику движения smile я же сразу с первого вопроса предположил, что плагин инициализируется раньше функции (вполне логичное предположение smile глядя на текст получаемой ошибки).

            Вопрос был в иерархии, что после чего загружается..
            Вот Ваш ответ ОЧЕНЬ помог сейчас зацепил все на init
            ЗАРАБОТАЛО ПРЕКРАСНО!

            Огромное Вам спасибо, читаю Ваш блог уже пару лет .. если не больше smile
            а надобность спрашивать возникла только сейчас smile
            Наверное это свидетельствует о том, что в блоге достаточно информации, чтобы обойтись без дополнительных вопросов smile но как видите .. бывают случаи smile
            Еще раз спасибо.

            2
            Ответить4.5 года назад #
Здравствуйте, !     Войти . Зарегистрироваться