【问题标题】:Wordpress: Generate Array of Tags From Posts in a Particular CategoryWordpress:从特定类别的帖子生成标签数组
【发布时间】:2009-06-18 19:22:44
【问题描述】:

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

例如,如果我有两个类别,“apple”和“orange”,我想要一组仅在 apple 类别的帖子中使用的术语,而不是在 orange 类别中。 (不过,如果在both中使用了一个术语,则应该包括在内)

我尝试使用一些 wordpress 函数,但没有一个返回我想要的(包括 tag_cloud 函数)。我的猜测是我留下了一个查询调用......但到目前为止,我所有的查询都没有给我想要的列表。

提前感谢您的帮助。

【问题讨论】:

    标签: mysql wordpress


    【解决方案1】:

    以下是使用 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 更新其数据库架构时,这些查询通常会中断。

    【讨论】:

      【解决方案2】:

      我不确定您是否可以使用 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 表与分类表连接几次以获得所需类别中的帖子 ID,然后将这些 ID 与分类表再连接几次以获得相关标签。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多