【问题标题】:Wordpress: mysql query to return posts from specific categry - and keywords?Wordpress:mysql查询返回特定类别的帖子 - 和关键字?
【发布时间】: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。

标签: mysql wordpress


【解决方案1】:

您可以使用另一个查询选择所有关键字和帖子 ID,并将这两个结果组合到更高级别(PHP - 我猜您会使用它)。您只会调用数据库两次,但是您必须在 PHP 级别编写更多逻辑。

第二个结果如下所示:

post_id | keyword 
-----------------
      2 | keyword1
      2 | keyword2 
      3 | keyword3 
      4 | keyword2 
      4 | keyword10

【讨论】:

  • 谢谢。正如我所提到的,我试图避免这种情况,因为我需要请求其中的很多(有时会达到数千个)并且不想为每个请求进行第二次 MySQL 调用。
  • 你不明白我的意思。您调用第二个查询返回结果,就像我添加到我的答案中一样。无论您有多少帖子,您都只调用两个 sql 查询:第一个返回您想要的类别中的所有帖子,第二个返回所有带有帖子 ID 的关键字。见上表(已编辑)
  • 啊,我明白了 - 所以调用所有帖子,然后调用所有关键字并使用 PHP 来匹配它们?如果是这种情况,我将如何为原始通话中的每个帖子请求关键字 ID? (我想我会用它作为键)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多