Стандартные способы получить ID товара в WooCommerce
Чтобы woocommerce получить id товара стандартными методами, достаточно заглянуть в админку. Откройте список продуктов и наведите курсор на нужное наименование — в строке браузера появится ссылка, где после post= указан цифровой идентификатор. Альтернатива — колонка «ID» в таблице товаров (её включают через настройки экрана).
Где посмотреть ID товара в админке WordPress
Чтобы узнать числовой идентификатор позиции, зайдите в консоль управления сайтом. Откройте раздел «Товары» — там отобразится перечень всех созданных единиц. В стандартной таблице колонка с идентификатором обычно скрыта. Для её отображения кликните на «Настройки экрана» в верхней части страницы и отметьте пункт «ID». После этого в каждой строке появится соответствующее число.
Как узнать ID через URL-ссылку на товар
Самый быстрый способ — взглянуть на адресную строку браузера, когда вы находитесь на странице редактирования позиции в админке.
- Откройте список всех продуктов в консоли: «Товары» → «Все товары».
- Наведите курсор на название нужной позиции. Внизу экрана (в статусной строке) появится ссылка.
- Либо кликните по названию, чтобы перейти в редактор.
В URL вы увидите примерно такую конструкцию: /wp-admin/post.php?post=12345&action=edit. Цифры после post= — это и есть идентификатор. Обратите внимание: параметр post всегда указывает на внутренний номер записи в базе данных WordPress, который WooCommerce использует для товаров.
Программное получение ID товара через PHP-код
Когда стандартные средства админки недоступны, разработчики обращаются к функциям ядра. Для извлечения идентификатора в цикле или при обработке заказа применяется глобальный объект $product. Метод get_id() возвращает числовой код позиции. Альтернативный путь — использование get_the_ID() внутри петли WP. В таблице ниже приведены основные варианты вызова:
| Сценарий | Код |
|---|---|
| Внутри цикла товаров | get_the_ID() |
| Из объекта продукта | $product->get_id() |
| Из переменной $post | $post->ID |
Указанные конструкции работают как в шаблонах темы, так и в пользовательских плагинах.
Использование глобального объекта $product и метода get_id()
Когда код выполняется в пределах цикла товаров (например, в archive-продукт.php), проще всего обратиться к глобальной переменной. Она даёт доступ к данным текущего изделия без лишних запросов. Достаточно объявить global $product; и вызвать $product->get_id(). Это возвращает числовой идентификатор позиции. Метод работает и внутри хуков, где объект уже определён системой. Такой подход экономит ресурсы и ускоряет разработку.
Функция get_the_ID() для получения ID в цикле
Когда вы обрабатываете товары внутри цикла WordPress (например, в файле archive-product.php), самым простым способом оказывается встроенная функция get_the_ID(). Этот метод возвращает числовой идентификатор текущей записи. Вызывать её следует без аргументов, предварительно убедившись, что цикл запущен. Срабатывает она только в контексте глобального объекта $post. Альтернатива — прямое обращение к $product->get_id(), но такой подход требует наличия объекта товара.
Получение ID товара по его названию или артикулу
Когда нужно отыскать идентификатор, опираясь на название продукта или его SKU, применяют запросы к базе данных. Ниже разобраны два рабочих варианта для такой задачи.
- Через WP_Query: создаётся запрос с параметрами
‘title’или‘sku’, после чего из результата извлекаетсяIDзаписи. - Прямой SQL-запрос: в таблице
wp_postsищут строку по столбцамpost_titleилиpost_name, затем берут соответствующее значениеID.
Первый способ предпочтительнее для новичков, второй — быстрее при работе с большим каталогом.
Как найти ID товара по названию через wp_query
Когда название известно, а числовой идентификатор нужен для дальнейших манипуляций, выручает класс WP_Query. Он позволяет отфильтровать записи по заголовку и извлечь нужный параметр. Вот пример:
- Создайте запрос с аргументом
'title' => 'Искомое название'и'post_type' => 'product'. - Запустите цикл
while( $query->have_posts() ). - Внутри цикла вызовите
get_the_ID()— он вернёт цифровой код изделия.
Такой подход удобен, если вы работаете с кастомными скриптами и не хотите лезть в базу данных напрямую. Главное — не забыть вызвать wp_reset_postdata() после цикла, чтобы не сломать глобальную переменную $post.
Поиск ID товара в WooCommerce по артикулу (SKU)
Когда на складе сотни единиц, ручной перебор в админке — сомнительное удовольствие. Куда быстрее отыскать запись по её уникальному коду. В WooCommerce для этой цели существует несколько путей.
- Через базу данных (phpMyAdmin). Запрос к таблице wp_postmeta по полю meta_key = ‘_sku’ выдаст нужный номер.
- С помощью функции wc_get_product_id_by_sku() в файлах темы или плагина. Ей передаётся строка артикула, а на выходе — идентификатор.
- Используя REST API. GET-запрос по адресу /wp-json/wc/v3/products?sku=ВАШ_АРТИКУЛ возвращает JSON с полным объектом.
Каждый из этих подходов решает задачу, но для автоматизации чаще применяют второй вариант — он не требует прямого доступа к БД.
Работа с ID товара в шаблонах и хуках темы
Внутри файлов темы (single-product.php, functions.php) идентификатор продукта часто извлекается через глобальный объект $product. Вызов $product->get_id() возвращает числовой код позиции. Для хуков вроде woocommerce_before_single_product_summary аргумент передаётся автоматически — его можно получить через $args[‘id’]. Альтернативный вариант: использовать get_the_ID() внутри цикла WooCommerce. Это удобно для кастомных вставок в карточку товара.
Добавление ID товара в произвольный вывод на странице
Когда требуется показать идентификатор позиции за пределами стандартного цикла, используют прямые обращения к объекту через WC_Product. Например, в файлах темы (single-product.php или archive-product.php) можно вставить такой фрагмент:
<?php
$product_id = $product->get_id();
echo 'Артикул: ' . $product_id;
?>
Для произвольных виджетов или шорткодов применяют фильтры. Вот пример вставки идентификатора в название товара:
- Добавьте код в functions.php дочерней темы.
- Используйте хук
the_titleдля модификации вывода.
Таблица ниже показывает типовые сценарии и соответствующие методы:
| Ситуация | Код |
|---|---|
| Внутри цикла WP_Query | $product->get_id() |
| По slug или URL | wc_get_product_id_by_slug( $slug ) |
Использование ID для создания кастомных ссылок и кнопок
Когда номер позиции известен, его применяют для генерации нестандартных ссылок. Например, так формируют прямые переходы к редактированию записи в админке или добавляют кнопку «Купить сейчас», ведущую на конкретную страницу. Без этого идентификатора пришлось бы искать товар по другим признакам — что медленнее и ненадёжнее.
- Прямая ссылка на корзину:
/cart/?add-to-cart=123. - Кнопка «В избранное» с привязкой к ID через JavaScript.
- Формирование QR-кода для быстрого доступа к карточке.
| Сценарий | Пример URL |
|---|---|
| Быстрый переход в админку | /wp-admin/post.php?post=45&action=edit |
| Кастомная кнопка заказа | /checkout/?product_id=78 |
