Как Wordpress связывает сообщения с категориями в своей базе данных? - PullRequest
13 голосов
/ 17 мая 2010

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

26 голосов
/ 17 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...