【发布时间】:2009-09-08 18:56:39
【问题描述】:
Wordpress / 自定义 MySQL 查询
我有一个查询要返回特定类别的所有帖子:
SELECT ID, post_title, post_name, guid, post_date, post_content, guid FROM wp_posts as p
INNER JOIN wp_term_relationships AS tr ON
(p.ID = tr.object_id AND
tr.term_taxonomy_id IN (4) )
INNER JOIN wp_term_taxonomy AS tt ON
(tr.term_taxonomy_id = tt.term_taxonomy_id AND
taxonomy = 'category')
ORDER BY id DESC LIMIT 10
但我还需要此查询来返回与每个帖子关联的关键字。我开始创建“按帖子 ID 的关键字”查询,但意识到重复调用会非常昂贵。
知道如何为每个返回的帖子请求关键字/术语吗?我猜逗号分隔会起作用吗?
解决方案:
在 MySQL 中没有很好的方法——连接所有这些表可能很麻烦。所以,解决方案是三个步骤:
1) 获取帖子:
SELECT DISTINCT ID, post_title, post_name, guid, post_date, post_content, guid , GROUP_CONCAT(k.term_taxonomy_id) as keywords FROM wp_posts as p
INNER JOIN wp_term_relationships AS tr ON
(p.ID = tr.object_id AND
tr.term_taxonomy_id IN (4) )
INNER JOIN wp_term_relationships as k ON
(p.ID = k.object_id)
INNER JOIN wp_term_taxonomy AS tt ON
(tr.term_taxonomy_id = tt.term_taxonomy_id AND
taxonomy = 'category')
GROUP BY p.ID
ORDER BY id DESC LIMIT 10
“group_concat”将以逗号分隔的 ID 返回“关键字”
2) 从 wp_terms 中获取关键字
3) 根据需要使用 PHP 从该数组 (#2) 中查找关键字
【问题讨论】:
-
您能告诉我们您将如何使用这些数据吗?有内置的 WordPress 查询,如果您只想在网站上输出这些数据,则无需执行自定义 MySQL 查询即可返回该数据...
-
我在 Wordpress 之外进行此调用,并且不希望包含 WP 库 - 因此需要直接调用 MySQL。