Как узнать ID страницы, записи в WordPress?

Значение 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 текущего поста:

  1. ID содержится в глобальном объекте $post.
global $post;
$post_id = $post->ID;
  1. Функция get_queried_object_id() вернет ID поста.
$post_id = get_queried_object_id();
  1. В цикле (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.

  1. Можно воспользоваться тем же методом, что и для записей. Зайдите в админке Записи > Рубрики. Откройте страницу редактирования категории и в адресной строке найдите параметр tag_ID. Значение этого параметра и есть ID рубрики.
  1. Воспользуйтесь плагином Catch IDs который был рассмотрен выше. Он выводит столбец с ID для всех сущностей в админке. После установки перейдите в настройки плагина и включите отображение ID для категорий.
  1. Если нужно получить ID категории в коде, рекомендую воспользоваться универсальной функцией get_queried_object_id(). Она работает с текущим объектом запроса $wp_query, и возвращает ID записи, страницы, категории, автора, термина таксономии.
$id = get_queried_object_id();
echo $id;
Содержание:
Нет комментариев