SQL - Получение товаров из определенной категории из удаленной базы WooCommerce WordPress
Я подключился к базе данных и успешно получаю данные товаров. Теперь мне нужно вывести товары из конкретной категории. Магазин использует WooCommerce. Целевая страница находится в другом месте, поэтому я не могу импортировать функции WordPress.
Вот что у меня получилось на данный момент:
SELECT ID, `post_date`, `post_title`, `post_content`, `guid` FROM `wp_posts` as post
INNER JOIN wp_term_relationships rs ON rs.object_id = post.ID
INNER JOIN wp_terms t ON t.term_id = rs.term_taxonomy_id
WHERE `post_type` = "product"
AND `post_status` = "publish"
AND rs.term_taxonomy_id = 117
ORDER BY post_date DESC LIMIT 5
Ничего не происходит. Если я убираю условие AND rs.term_taxonomy_id = 117
, запрос работает как раньше - выводятся 5 самых старых товаров. Но не товары из конкретной категории. Что я упускаю?

Я проверил ваш запрос, и он работает корректно без ошибок и пустых результатов. Однако, если убрать INNER JOIN
из таблицы wp_terms
, запрос также будет работать, поскольку вы не получаете данные из этой таблицы, и она не используется в условии WHERE
.
SELECT ID, `post_date`, `post_title`, `post_content`, `guid` FROM `wp_posts` as post
INNER JOIN wp_term_relationships rs ON rs.object_id = post.ID
WHERE `post_type` = "post" // тип записи post для моего примера
AND `post_status` = "publish"
AND rs.term_taxonomy_id = 1 // term_taxanomy_id равен 1 для моего примера
ORDER BY post_date DESC LIMIT 5

Для записей работает нормально. Но для товаров — нет. Товары имеют таксономию product_cat. Когда я запускаю этот запрос, получаю "MySQL вернул пустой результат (т.е. ноль строк)". Но у меня есть товары в этой категории.

SELECT
`ID`,
`post_title`,
`guid`
FROM
posts
WHERE
post_type='product' AND
post_status='publish' AND
ID IN(
SELECT
object_id
FROM
term_relationships
WHERE
term_taxonomy_id IN(ВАШ_ID_КАТЕГОРИИ_ИЛИ_НЕСКОЛЬКО_ID_ЧЕРЕЗ_ЗАПЯТУЮ) AND
term_taxonomy_id IN(
SELECT
term_taxonomy_id
FROM
term_taxonomy
WHERE
taxonomy='product_cat' )
)
