如何通过 DB (SQL) 获取 Wordpress 类别 (the_categories())

Posted

技术标签:

【中文标题】如何通过 DB (SQL) 获取 Wordpress 类别 (the_categories())【英文标题】:How to get Wordpress categories (the_categories()) via DB (SQL) 【发布时间】:2021-03-23 07:40:26 【问题描述】:

我需要什么以及为什么

由于我的插件 (WC_Membership) get_categories() 因内容受限而被过滤。

现在,出于比较原因,我需要列出每个类别(我会通过 get_categories() 进行),但如果不是管理员,则不会列出所有类别。 SQL 是解决我的问题的方法吗? (不要使用 WP_Query -> 会被其他插件过滤)

TL;DR:我需要未过滤的类别 - 可能通过 SQL

通常我会...

$cats = [];
foreach (get_categories() as $key => $value)             
   $cats[] = $value->cat_ID;

echo "Cats: ".implode(',',$cats);

将返回Cats: 1,225,228,494,490,492,232,241,233,234,235,236,237,238,242(未过滤为管理员)。

当有限制的用户运行此脚本时,他们会得到类似Cats: 1,225,228 的信息(但我需要列出所有类别)

【问题讨论】:

【参考方案1】:

如果我正确理解你的话:

SELECT wp_terms.term_id
FROM wp_term_relationships
LEFT JOIN wp_term_taxonomy
   ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
LEFT JOIN wp_terms on wp_term_taxonomy.term_taxonomy_id = wp_terms.term_id
WHERE wp_term_taxonomy.taxonomy = 'category'
GROUP BY wp_term_taxonomy.term_id

此 SQL 从数据库中获取所有分类。希望能帮到你

【讨论】:

工作顺利,但它返回 nice_names 而不是 ID。我试图用SELECT wp_terms.ID 交换SELECT wp_terms.name,但它仍然没有返回ID。您能否编辑您的答案以提供 ID。谢谢大家!

以上是关于如何通过 DB (SQL) 获取 Wordpress 类别 (the_categories())的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 XML 文件(存储在 SQL DB 中)的大小?

如何编写SQL查询以基于时间戳从DB获取数据

通过 API 从云上的 DB2 获取 SQL 结果到 Power Query

如何从 DB2 获取描述性错误消息?

如何在 DB2 Sql 中的上一列下方获取下一列的值

如何安装redis和给wordpres加速?