Wordpress通过我的sql从post slug中获取所有类别

时间:2017-02-21 15:37:08

标签: mysql wordpress

我有一个自定义表格,用于跟踪网站的访问权限。 该表如下:

日期,post_slug,用户

我想创建一个查询(mysql),从该表中添加第4列,其中包含帖子的所有类别。

我不想为每个类别创建一个新行,只是将所有类别添加到此表的每一行。

信息应存储在wp_term_relationship和wp_terms中,但我不知道如何为每个类别创建一行而不是n行

1 个答案:

答案 0 :(得分:1)

你应该做的主要是group by wp_posts.id。此命令将所有相等的id合并为一行。现在,您应该使用group_concat( FIELDNAME )将所有愿望字段放在一列中。

您需要类别名称或类别ID吗?

如果您希望有类别名称:

  SELECT tbl.*,GROUP_CONCAT(term.name) FROM
  YOURTABLE as tbl
  left join wp_posts as p
  on p.post_name = tbl.post_slug
  left join wp_term_relationships as rels
  on rels.object_id = p.ID
  left JOIN wp_term_taxonomy as tx
  on tx.term_taxonomy_id = rels.term_taxonomy_id
  left join wp_terms as term
  on term.term_id = tx.term_id
  where tx.taxonomy = "category"
  group by p.ID

如果您需要类别ID:

 SELECT tbl.*,GROUP_CONCAT(tx.term_taxonomy_id) FROM
 YOURTABLE as tbl
 left join wp_posts as p
 on p.post_name = tbl.post_slug
 left join wp_term_relationships as rels
 on rels.object_id = p.ID
 left JOIN wp_term_taxonomy as tx
 on tx.term_taxonomy_id = rels.term_taxonomy_id
 -- left join wp_terms as term
 -- on term.term_id = tx.term_id
 where tx.taxonomy = "category"
 group by p.ID

注意:

  • YOURTABLE是您的3栏目表。

  • 如果您想获取所有代码,只需将where tx.taxonomy = "category"修改为where tx.taxonomy = "post_tag"

  • 如果您使用的是自定义帖子类型,并且您想要wordpress自定义帖子类型标签或类别,请在and p.post_type ="YOURPOSTTYPE"行之后添加where ..