Значение ID в WordPress может понадобиться для манипуляций над конкретной страницей. Например, если вы хотите задать для конкретной страницы отдельный шаблон или подключить к ней дополнительные JavaScript скрипты. В этой статье рассмотрим наиболее популярные варианты узнать ID страницы или записи. Дополнительно покажем, как узнать ID категории.
#1
В адресной строке в админке
Самый простой и быстрый способ узнать ID страницы в админке – это зайти в раздел Страницы > Все страницы.

Далее у вас два варианта. Вы можете подвести курсор к названию страницы и внизу в браузере появится ссылка редактирования. В ссылке в параметре post
указан ID страницы.

Либо откройте страницу редактирования страницы и в адресной строке браузера скопируйте ID записи из параметра post
.

#2
В админке в дополнительном столбце записей/страниц
По умолчанию в админке нигде не отображается ID страниц. С помощью плагина или небольшого кода можно вывести дополнительный столбец ID в общей таблице постов.
Воспользуйтесь плагином Catch IDs. После установки в таблицах вывода записей и страниц появится дополнительный столбец.

Такой столбец очень легко добавить и без плагина с помощью специального кода. Откройте файл functions.php
вашей темы и добавьте в конце код
add_filter('manage_posts_columns', 'add_id_posts_column', 10, 2);
add_action('manage_posts_custom_column', 'add_id_posts_column_value', 10, 2);
add_filter('manage_pages_columns', 'add_id_pages_column');
add_action('manage_pages_custom_column', 'add_id_posts_column_value', 10, 2);
/**
* Добавляет колонку ID для таблицы записей
*
* @param mixed $columns
* @param mixed $post_type
* @return array
*/
function add_id_posts_column($columns, $post_type)
{
$columns['post_id'] = 'ID';
return $columns;
}
/**
* Добавляет колонку ID для таблицы страниц
*
* @param mixed $columns
* @return array
*/
function add_id_pages_column($columns)
{
$columns['post_id'] = 'ID';
return $columns;
}
/**
* Выводит ID каждого поста в таблице
*
* @param mixed $column
* @param mixed $id
* @return void
*/
function add_id_posts_column_value($column, $id)
{
if ($column === 'post_id') {
echo $id;
}
}
В результате столбец с ID будет добавлен в конце таблицы

#3
В css классе на странице одиночной записи
Теперь рассмотрим, как узнать ID записи в лицевой части сайта.
В WordPress есть функция body_class
, которая выводит список классов, которые относятся к конкретной странице сайта. Для всех записей и страниц в css-класс добавляется ID текущей страницы.
Чтобы увидеть ID, необходимо перейти на нужную запись (или страницу) и открыть исходный код сайта или DevTools (F12).

Число после postid-
и есть ID текущего поста.
Этот способ будет работать при условии, что функция
body_class
использована в вашей теме и классы по умолчанию не переопределены разработчиками.
#4
В форме добавления комментария
Этот способ работает только для тих типов записей, которые поддерживают комментарии. По умолчанию комментарии можно оставлять только к записям.
Если на странице записи есть форма добавления комментария, то откройте DevTools (F12) и найдите форму #commentform
.
Скрытое поле comment_post_ID
имеет значение ID текущей записи.

#5
В таблице базы данных
Не рекомендую использовать данный способ. Неосторожное взаимодействие с базой данных может нанести вред работоспособности сайта.
На хостинге или локальном сервере зайдите в phpMyAdmin и откройте базу данных вашего сайта. Нас интересует таблица wp_posts
.

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

Далее будут рассмотрены методы которые требуют знаний PHP и понимания логики работы WordPress. Не используйте их на рабочем сайте, а только на локальной версии сайта.
#6
Через код на странице поста
Есть несколько вариантов получения ID текущего поста:
- ID содержится в глобальном объекте
$post
.
global $post;
$post_id = $post->ID;
- Функция
get_queried_object_id()
вернет ID поста.
$post_id = get_queried_object_id();
- В цикле (loop) можно получить ID функцией
get_the_id()
.
if (have_posts()) {
while (have_posts()) {
the_post();
$post_id = get_the_ID();
}
}
#7
Через код по названию или slug поста
Если известно название поста (title) или его slug, то используйте следующий код
$posts = new WP_Query([
'post_type' => 'page',
'title' => 'Контакты',
'posts_per_page' => 1,
'fields' => 'ids',
'no_found_rows' => true,
'update_post_term_cache' => false,
'update_post_meta_cache' => false
]);
if( $posts->have_posts() ) {
$page_id = $posts->posts[0];
echo $page_id;
}
Код выведет ID страницы Контакты, если страница с таким названием существует.
Чтобы найти страницу по значению slug, удалите из массива параметров WP_Query
параметр title
и укажите name
.
$posts = new WP_Query([
'post_type' => 'page',
'name' => 'contacts',
'posts_per_page' => 1,
'fields' => 'ids',
'no_found_rows' => true,
'update_post_term_cache' => false,
'update_post_meta_cache' => false
]);
Аналогичным способом можно узнавать ID любого типа записи. Просто замените в массиве значение параметра post_type
на необходимый вам.
Как узнать ID категории WordPress
Мы рассмотрели наиболее популярные способы узнать ID страницы или записи. Теперь покажу как быстро узнать id категории WordPress.
- Можно воспользоваться тем же методом, что и для записей. Зайдите в админке Записи > Рубрики. Откройте страницу редактирования категории и в адресной строке найдите параметр
tag_ID
. Значение этого параметра и есть ID рубрики.

- Воспользуйтесь плагином Catch IDs который был рассмотрен выше. Он выводит столбец с ID для всех сущностей в админке. После установки перейдите в настройки плагина и включите отображение ID для категорий.

- Если нужно получить ID категории в коде, рекомендую воспользоваться универсальной функцией
get_queried_object_id()
. Она работает с текущим объектом запроса$wp_query
, и возвращает ID записи, страницы, категории, автора, термина таксономии.
$id = get_queried_object_id();
echo $id;