当前位置: 首页 > 面试题库 >

Wordpress SQL:获取帖子类别和标签

牛经赋
2023-03-14
问题内容

我想查询存储在MySQL数据库中的Wordpress数据,以便获得带有列的结果:

  1. post_id
  2. category
  3. tags

预期产量:

+---------------+----------+----------------+
| post_id       | category | tags           |
|---------------+----------+----------------+
| 213           | news     | tag1,tag2,tag3 |
+---------------+----------+----------------+

这是我尝试过的:

SELECT
    p.id,
    c.name,
    GROUP_CONCAT(t.`name`)
FROM wp_posts p
JOIN wp_term_relationships cr 
    on (p.`id`=cr.`object_id`)
JOIN wp_term_taxonomy ct 
    on (ct.`term_taxonomy_id`=cr.`term_taxonomy_id` and ct.`taxonomy`='category')
JOIN wp_terms c 
    on (ct.`term_id`=c.`term_id`)
JOIN wp_term_relationships tr 
    on (p.`id`=tr.`object_id`)
JOIN wp_term_taxonomy tt 
    on (tt.`term_taxonomy_id`=tr.`term_taxonomy_id` 
   and tt.`taxonomy`='post_tag')
JOIN wp_terms t 
    on (tt.`term_id`=t.`term_id`)

结果,我得到了想要的列以及期望的内容,但是 我只有一行

我究竟做错了什么?


问题答案:

如评论中所述,我包括一个聚合函数,但没有“ group by”子句。

现在,这似乎可行(只需添加GROUP BY一行即可):

SELECT
    p.id,
    p.post_name,
    c.name,
    GROUP_CONCAT(t.`name`)
FROM wp_posts p
JOIN wp_term_relationships cr
    on (p.`id`=cr.`object_id`)
JOIN wp_term_taxonomy ct
    on (ct.`term_taxonomy_id`=cr.`term_taxonomy_id`
    and ct.`taxonomy`='category')
JOIN wp_terms c on
    (ct.`term_id`=c.`term_id`)
JOIN wp_term_relationships tr
    on (p.`id`=tr.`object_id`)
JOIN wp_term_taxonomy tt
    on (tt.`term_taxonomy_id`=tr.`term_taxonomy_id`
    and tt.`taxonomy`='post_tag')
JOIN wp_terms t
    on (tt.`term_id`=t.`term_id`)
GROUP BY p.id


+---------------+----------+----------------+
| post_id       | category | tags           |
|---------------+----------+----------------+
| 213           | news     | tag1,tag2,tag3 |
+---------------+----------+----------------+
| 216           | whatever | tag2,tag3      |
+---------------+----------+----------------+

谢谢



 类似资料:
  • 我试图在一个页面上显示来自两个类别的帖子(6) 我将如何将类别ID“7”添加到该代码中,以使所有内容都像上面解释的那样工作?提前谢谢!

  • 我需要贴标签。我正在为此使用这样的代码: var_dump为tag=blog返回这样的数据 数组(5){["type"]= 并且不显示此标记的任何记录。在DB中存在4条记录。 当然,我可以将此代码用于查看帖子: 但是在这个页面上,我需要显示每页的帖子数量等等。 我不明白为什么WP_Query()在我的代码中不起作用。你能帮我吗? 数组中应该包含哪些属性?我当前的$args不工作:

  • 我有一个自定义的帖子类型和一个像这样创建的公文包分类法: 当我在查询中使用它时,它的工作原理应该是这样的。它显示在后端的菜单中,以及此自定义帖子类型的类别。 我的问题是,当我尝试从某个类别检索所有帖子时(通过单击类别名称),我发现

  • 这是我在这里的第一篇帖子,而且我是一个初学者,所以请耐心听我说。 我想完成的是创建一个AJAX函数,该函数将以复选框的形式列出所有可用类别,用户可以从中选择。选择并点击“应用”后,我想显示分配给所选类别的帖子中所有标签的列表(也以复选框的形式)。然后用户可以从可用的标签中进行选择,然后在点击最后的“应用”按钮后,将显示相应的帖子。 类似于TED. com的“你感兴趣的是什么?”但是在AJAX中。所

  • 我试图抓取Reddit的subreddits帖子,其中有很多问题: < code>s2 = "我的(22m)和我的搭档(21m)是酒吧和foo" 我想做一个函数,可以解析每个字符串,然后返回年龄和性别对。所以: 从本质上讲,每个年龄/性别标签都是一个两位数,后跟。

  • 我必须从自定义帖子类型返回所有帖子,由'start_date'从'ACF字段'。 我有一些有日期的帖子,还有一些没有日期的帖子。当我添加“orderby”时= 这是我的代码: 如果我删掉 我所有的帖子都被退回,但它们不是按开始日期排序的 有什么想法吗? 谢谢。