Как Wordpress связывает сообщения с категориями в своей базе данных?

В настоящее время я показываю список последних 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

Как я могу отредактировать этот запрос, чтобы ограничить поиск определенным идентификатором категории? Я думал, что это будет так же просто, как поиск поля категории в таблице сообщений, но это не так!

Ответ 1

Отношения базы данных Wordpress доступны в диаграмме базы данных .

В вашем конкретном случае это:

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-соединение:

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) для фильтрации сообщений из базы данных.