SQL-запросы для WooCommerce
Получать информацию о товарах намного быстрее через прямые запросы в базу данных. Но требует осторожности и необходимых знаний. В этой статье приведены примеры безопасного получения информации из базы данных. То есть ничего в базе не меняем, только получаем информацию.
Запрос товаров с ID и sku
ID | post_title | sku |
---|---|---|
211 | Кошелек Wanlima 0020 | 2000000281933 |
213 | Кошелек Wanlima 1170013B1 | 2000000320571 |
235 | Кошелек Wanlima 1170546 черный | 2000000276571 |
239 | Кошелек Ego Favorite 03-0011 черный | 2200000031174 |
SELECT p.ID,
p.post_title,
IF (meta.meta_key = '_sku', meta.meta_value, null) AS 'sku'
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS meta
ON p.ID = meta.post_ID
WHERE meta.meta_key = '_sku'
Запрос товаров с артикулом и ценой
Также добавим условие получения только опубликованных товаров со статусом “publish”.
ID | post_title | sku | price |
---|---|---|---|
193 | Кошелек Ego Favorite 03-0011 темно-красный | 2200000031167 | 2800 |
211 | Кошелек Wanlima 0020 | 2000000281933 | 4450 |
213 | Кошелек Wanlima 1170013B1 | 2000000320571 | 4150 |
235 | Кошелек Wanlima 1170546 черный | 2000000276571 | 4450 |
239 | Кошелек Ego Favorite 03-0011 черный | 2200000031174 | 2800 |
SELECT p.ID,
p.post_title,
GROUP_CONCAT(IF (meta.meta_key = '_sku', meta.meta_value, null)) AS 'sku',
GROUP_CONCAT(IF (meta.meta_key = '_price', meta.meta_value, null)) AS 'price'
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS meta
ON p.ID = meta.post_ID
WHERE meta.meta_key IN ('_sku', '_price')
AND p.post_status = 'publish'
GROUP BY p.ID
ORDER BY p.ID
Мы можем получать любые данные из таблицы wp_postmeta, добавляя в SELECT соответствующие строки:
GROUP_CONCAT(IF (meta.meta_key = '_stock', meta.meta_value, null)) AS 'stock'
А также в условие WHERE:
WHERE meta.meta_key IN ('_sku', '_price', '_stock')
Большое спасибо.