Обзорная статья о том, как узнать ID пользователя WordPress в различных ситуациях.
Что такое ID пользователя? Это его уникальный идентификатор, используемый в различных функциях движка WP.
1. URL профиля пользователя в админке
Способ довольно простой, однако у него есть два минуса. Во-первых, вы должны быть авторизованы, во-вторых, вы не сможете узнать ID пользователя, под которым вы вошли.
Итак:
2. Добавление колонки с ID в список пользователей в админке
Скажу вам честно, если вам часто приходится выяснять ID пользователей WordPress, то этот способ значительно облегчит вашу жизнь. Он прост в установке и дает потрясающий результат:
Для того, чтобы установить такое на свой блог, достаточно вставить следующий код в 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();