获取被查询帖子的类别

时间:2013-07-24 作者:Sebastian Starke

我从ID数组中查询帖子:

$args = array(
    \'post_type\' => \'post\',
    \'post__in\' => $ids,
    \'orderby\' => \'id\',
    \'order\' => \'DESC\'
);
现在,我想显示一个表单,其中包含这些查询帖子类别的复选框。例如,如果“戏剧”类别中有两篇帖子,我不希望显示“喜剧”类别复选框。

问题是:由于get_类别中没有post_uin参数,所以我不知道如何做到这一点。

$catargs = array(
    \'post__in\' => $ids,
);

$categories = get_categories(  $catargs  ); ?>

1 个回复
最合适的回答,由SO网友:iEmanuele 整理而成

您需要:

帖子id数组(确定)

  • 类别id数组(尚未)
  • 具有唯一值的类别id/名称数组(尚未)
    1. 使用wp_get_posts_categories( $post_id ); 返回类别id的数组,因此您可以循环使用$id调用此函数来收集所有类别id。

      使用类别id数组,您可以使用id/名称对设置一个全新的类别,然后使用array_unique(); 从重复的值中清除它。

      我找不到任何其他解决方案,因此:

      UPDATE

      <?php
      /*
       *Loop through your $ids and:
       * get all the categories id for your queried posts ( wp_get_post_categories( $id ) )
       * loop through this new array to get single category data ( get_category( $catid ) )
       * set up a new array with term_id/name value pairs ( $categories )
       * clean up your new array from duplicate values ( array_unique( $categories ) )
       */
      foreach( $ids as $id ){
      $catids = wp_get_post_categories( $id );
        foreach( $catids as $catid ){
          $category = get_category( $catid );
          $categories[$category->term_id] = $category->name; 
        }
      }
      
      $filtered_categories = array_unique($categories);
      
      ?>
      
      我已经测试过了,现在可以工作了。希望有帮助!

    结束

    相关推荐

    通过jQuery复选框显示Meta Box

    我一直在玩弄Jquery和PHP,我正试图为一支运动队建立一个网站。我创建了一个名为“匹配”的自定义帖子类型,并在其中创建了两个自定义元框。一个用于比赛细节(即主客场)和一个用于比赛统计(进球、投篮等)。我目前拥有的是一个(这个游戏完成了吗)复选框,它在元框详细信息(#dw\\u match\\u Details)中显示/隐藏统计选项(位于Div#meta\\u box\\u stats中)。复选框数据值正在保存,但功能不太正常。如果在加载后将其选中为完成编辑,并且该值设置为“开”,那么当我尝试编辑帖子时