Как 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

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

14
задан bcmcfc 17 May 2010 в 11:13
поделиться

1 ответ

Отношения базы данных 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).

26
ответ дан 1 December 2019 в 10:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: