SQL - Получение товаров из определенной категории из удаленной базы WooCommerce WordPress

23 июл. 2014 г., 06:47:26
Просмотры: 16.2K
Голосов: 0

Я подключился к базе данных и успешно получаю данные товаров. Теперь мне нужно вывести товары из конкретной категории. Магазин использует 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 самых старых товаров. Но не товары из конкретной категории. Что я упускаю?

0
Все ответы на вопрос 2
3

Я проверил ваш запрос, и он работает корректно без ошибок и пустых результатов. Однако, если убрать 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
23 июл. 2014 г. 15:00:48
Комментарии

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

john254 john254
23 июл. 2014 г. 18:15:59

ОК, проверю. :)

ksr89 ksr89
24 июл. 2014 г. 07:37:18

@john254 выполни этот запрос в MySQL и проверь, есть ли какие-то результаты.

ksr89 ksr89
24 июл. 2014 г. 08:13:13
1
-3
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' )
                                           )
18 дек. 2014 г. 19:53:46
Комментарии

Пожалуйста, почистите ваш код и оформите [правку], объяснив, что делает ваш код и как он работает

Pieter Goosen Pieter Goosen
18 дек. 2014 г. 19:55:03