WordPress如何获取当前分类下所有文章的所有标签聚合

文章介绍了如何使用MySQL查询从WordPress数据库中获取特定分类下所有文章的标签聚合。查询涉及wp_terms、wp_term_taxonomy、wp_term_relationships和wp_posts表的联接操作,通过指定分类ID和文章状态筛选数据。在WordPress中,可以利用$wpdb对象执行此查询并获取标签信息的数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们有时候需要在当前分类下自动获取所有文章的所有标签,来进行自动标签筛选。那么要获取当前分类下所有文章的所有标签聚合,可以使用以下的MySQL查询语句:

SELECT DISTINCT wp_terms.term_id, wp_terms.name, wp_terms.slug
FROM wp_terms
INNER JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
INNER JOIN wp_term_relationships ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id
INNER JOIN wp_posts ON wp_term_relationships.object_id = wp_posts.ID
WHERE wp_term_taxonomy.taxonomy = 'post_tag'
AND wp_term_taxonomy.term_id IN (
    SELECT term_id FROM wp_term_taxonomy WHERE taxonomy = 'category' AND term_id = [当前分类ID]
)
AND wp_posts.post_status = 'publish'

其中,[当前分类ID]需要替换为实际的分类ID。

这个查询语句会返回当前分类下所有文章的所有标签的聚合结果,包括每个标签的ID、名称和slug。

如果你想在WordPress中使用这个查询语句,可以使用$wpdb对象来执行查询,示例代码如下:

global $wpdb;
$tags = $wpdb->get_results("
    SELECT DISTINCT wp_terms.term_id, wp_terms.name, wp_terms.slug
    FROM {$wpdb->terms} AS wp_terms
    INNER JOIN {$wpdb->term_taxonomy} AS wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
    INNER JOIN {$wpdb->term_relationships} AS wp_term_relationships ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id
    INNER JOIN {$wpdb->posts} AS wp_posts ON wp_term_relationships.object_id = wp_posts.ID
    WHERE wp_term_taxonomy.taxonomy = 'post_tag'
    AND wp_term_taxonomy.term_id IN (
        SELECT term_id FROM {$wpdb->term_taxonomy} WHERE taxonomy = 'category' AND term_id = [当前分类ID]
    )
    AND wp_posts.post_status = 'publish'
");

这个代码会返回一个包含所有标签聚合结果的数组,每个元素是一个对象,包含term_idnameslug三个属性。

原文:https://www.mobantu.com/9982.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值