代码之家  ›  专栏  ›  技术社区  ›  jmccartie

wordpress:从特定类别的文章中生成标签数组

  •  0
  • jmccartie  · 技术社区  · 16 年前

    使用WordPress,我需要从特定类别的文章中生成一组标签(术语)。

    例如,如果我有两个类别,“苹果”和“橙色”,我想要一个仅在“苹果”类别中的文章中使用的术语数组,而不是橙色类别中的。(但是,如果在 二者都 ,应该包括在内)

    我试过使用一些wordpress函数,但没有一个返回我想要的(包括tag_Cloud函数)。我想我只剩下一个查询电话…但到目前为止,我所有的疑问都没有给我想要的清单。

    事先谢谢你的帮助。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Edward Dale    16 年前

    我不确定你能用WordPress提供的功能完成你想要的。下面是一个SQL查询,它似乎可以满足您的需要:

    SELECT tag_terms.name, COUNT(wp_posts.ID) FROM wp_posts 
    
    INNER JOIN wp_term_relationships AS cat_term_relationships ON wp_posts.ID= cat_term_relationships.object_ID 
    INNER JOIN wp_term_taxonomy AS cat_term_taxonomy ON cat_term_relationships.term_taxonomy_id= cat_term_taxonomy.term_taxonomy_id 
    INNER JOIN wp_terms AS cat_terms ON cat_term_taxonomy.term_id= cat_terms.term_id 
    
    INNER JOIN wp_term_relationships AS tag_term_relationships ON wp_posts.ID= tag_term_relationships.object_ID 
    INNER JOIN wp_term_taxonomy AS tag_term_taxonomy ON tag_term_relationships.term_taxonomy_id= tag_term_taxonomy.term_taxonomy_id 
    INNER JOIN wp_terms AS tag_terms ON tag_term_taxonomy.term_id= tag_terms.term_id 
    
    WHERE cat_term_taxonomy.taxonomy='category' AND cat_terms.name='apple' AND tag_term_taxonomy.taxonomy='post_tag'
    GROUP BY tag_terms.name
    

    其要点是,您将wp_posts表与分类表连接几次,以获取所需类别中的post id,然后再将这些id与分类表连接几次,以获取相关的标记。

        2
  •  3
  •   aaronwaggs    16 年前

    下面是如何使用WordPress函数完成这一任务

    <?php
    $tags = array();
    
    $posts = get_posts('category_name=new-cat&numberposts=-1'); //get all posts in category
    
    foreach ($posts as $post){
        $posttags = get_the_tags($post->ID); //check for tags
        if ($posttags){
            foreach ($posttags as $posttag){
                $tags[$posttag->term_id] = $posttag->name; // add to array of tag ids => names
            }
        }
    }
    print_r($tags);
    ?>
    

    这可能比原始SQL查询更可取,因为当WordPress更新其数据库模式时,这些查询常常会中断。