В настоящее время я отображаю список последних 5 сообщений в блоге сайта в его нижнем колонтитуле с помощью этого запроса mysql:
SELECT post_title, guid, post_date FROM wp_posts WHERE post_type = 'post' AND post_status = 'Publish' ORDER BY post_date DESC LIMIT 5
Как я могу отредактировать этот запрос для ограничения поиска конкретным идентификатором категории? Я думал, что это будет столь же просто как поиск поля категории в таблице сообщений, но это не!
Отношения базы данных Wordpress доступны в диаграмме базы данных.
In your particular case it is:
wp_posts.ID
->wp_term_relationships.object_id
->wp_term_relationships.term_taxonomy_id
->wp_term_taxonomy.term_taxonomy_id
->wp_term_taxonomy.term_id
->wp_terms. term_id
Для запроса нужно использовать SQL join:
SELECT p.ID, t.term_id
FROM wp_posts p
LEFT JOIN wp_term_relationships rel ON rel.object_id = p.ID
LEFT JOIN wp_term_taxonomy tax ON tax.term_taxonomy_id = rel.term_taxonomy_id
LEFT JOIN wp_terms t ON t.term_id = tax.term_id
Но следует отметить, что база данных wordpress может измениться в любой момент, и для фильтрации постов из базы данных следует использовать механизмы, предоставляемые Wordpress (например, query_posts
).