7 способов узнать ID пользователя в WordPress

Обзорная статья о том, как узнать ID пользователя WordPress в различных ситуациях.

Что такое ID пользователя? Это его уникальный идентификатор, используемый в различных функциях движка WP.

1. URL профиля пользователя в админке

Способ довольно простой, однако у него есть два минуса. Во-первых, вы должны быть авторизованы, во-вторых, вы не сможете узнать ID пользователя, под которым вы вошли.

Итак:

  1. Авторизуемся в админке и переходим в меню Пользователи > Все пользователи.
    Ссылка «Все пользователи» в меню
  2. Выбираем нужного нам пользователя из списка и переходим в его профиль.
  3. Смотрим на URL:
    ID пользователя в ссылке на его профиль

2. Добавление колонки с ID в список пользователей в админке

Скажу вам честно, если вам часто приходится выяснять ID пользователей WordPress, то этот способ значительно облегчит вашу жизнь. Он прост в установке и дает потрясающий результат:

колонка с ID пользователей

Для того, чтобы установить такое на свой блог, достаточно вставить следующий код в functions.php вашей текущей темы:

/*
 * Добавление колонки
 */
function true_user_id_column( $columns ) {
	$columns['user_id'] = 'ID';
	return $columns;
}
add_filter('manage_users_columns', 'true_user_id_column');
 
/*
 * Заполнение колонки
 */
function true_user_id_column_content($value, $column_name, $user_id) {
	if ( 'user_id' == $column_name )
		return $user_id;
	return $value;
}
add_action('manage_users_custom_column',  'true_user_id_column_content', 10, 3);
 
/*
 * Оформление колонки (необязательно)
 */
function true_user_id_column_style(){
	echo '<style>.column-user_id{width: 5%}</style>';
}
add_action('admin_head-users.php',  'true_user_id_column_style');

3. Как узнать ID пользователя, зная его email

Здесь нам поможет функция get_user_by(). Вот простой пример:

$user = get_user_by('email', 'true@truemisha.ru');
$user_id = $user->ID;

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

В данном примере второй аргумент «admin» и есть заданное имя пользователя. Впрочем, за всеми подробностями обращайтесь к описанию функции get_user_by().

$user = get_user_by('login', 'admin');
$user_id = $user->ID;

5. Если известно только имя (first_name) или фамилия (last_name)

Выводим ID всех пользователей с именем «Миша»:

global $wpdb;
$users = $wpdb->get_results( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'first_name' AND meta_value = 'Миша'" );
if( $users ) {
	foreach ( $users as $user ) {
		echo '<p>' . $user->user_id . '</p>';
	}
} else {
	echo 'Пользователей с указанным именем нет в базе.';
}

Выводим ID всех пользователей с фамилией «Рудрастых»:

global $wpdb;
$users = $wpdb->get_results( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'last_name' AND meta_value = 'Рудрастых'" );
if( $users ) {
	foreach ( $users as $user ) {
		echo '<p>' . $user->user_id . '</p>';
	}
} else {
	echo 'Пользователей с указанной фамилией нет в базе.';
}

6. Как вывести ID автора, опубликовавшего пост

В данном случае ID пользователя очень удобно вытаскивать из объекта поста. Сам объект поста можно получить различными способами:

get_post()

Функция get_post() очень удобна, когда нужно получить объект с информацией о конкретном посту:

$my_post = get_post( $id ); // $id - ID поста
echo $my_post->post_author; // выводим ID автора указанного поста

WP_Query

Подробное описание этого класса и его параметров вы можете найти здесь. Данный пример выведет заголовки всех постов и страниц на блоге, в скобках после каждого заголовка будет указан ID автора, опубликовавшего пост:

$args = array(
	'posts_per_page' => -1,
	'post_type' => array('post','page')
);
$query = new WP_Query( $args );
while( $query->have_posts() ) : $query->the_post();
	echo $query->post->post_title . ' (автор: ' . $query->post->post_author . ')<br />';
endwhile;
wp_reset_postdata();

7. Как узнать ID текущего пользователя

Функция get_current_user_id() возвращает ID текущего авторизованного пользователя WordPress:

$current_user_id = get_current_user_id();

Источник: http://rudrastyh.com/wordpress/get-user-id.html (мой англоязычный блог)

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Да, точно)

  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.