Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅列出文章所属的特定父类别的子类别_Php_Wordpress_Categories - Fatal编程技术网

Php 仅列出文章所属的特定父类别的子类别

Php 仅列出文章所属的特定父类别的子类别,php,wordpress,categories,Php,Wordpress,Categories,要么这比需要的更难,要么我只是不太理解WordPress/PHP:(我想做的只是显示特定父类别的子/子类别…但只有在帖子位于这些子类别中时才显示。具体示例: 我正在建立一个葡萄酒评论网站,其类别如下: 品牌子类别1子类别2等 地区子类别1子类别2等 葡萄子类别1子类别2等 父类别永远不会更改,每个帖子都会在每个父类别下选择至少一个子类别,因此在循环中,我可以按名称列出父类别。但我需要动态输出子类别,如下所示: Brand: <?php list_post_subcategories('

要么这比需要的更难,要么我只是不太理解WordPress/PHP:(我想做的只是显示特定父类别的子/子类别…但只有在帖子位于这些子类别中时才显示。具体示例:

我正在建立一个葡萄酒评论网站,其类别如下:

  • 品牌
    • 子类别1
    • 子类别2
      • 地区
          子类别1
        • 子类别2
          • 葡萄
            • 子类别1
            • 子类别2
              父类别永远不会更改,每个帖子都会在每个父类别下选择至少一个子类别,因此在循环中,我可以按名称列出父类别。但我需要动态输出子类别,如下所示:

              Brand: <?php list_post_subcategories('brand'); ?>
              Region: <?php list_post_subcategories('region'); ?>
              Grape: <?php list_post_subcategories('grape'); ?>
              
              品牌:
              地区:
              葡萄:
              
              有没有像这样简单的方法?这似乎应该是Wordpress中的一个基本函数?我已经看过了“get_categories”和“in_categories”函数,但它们似乎无法做到这一点。

              
              
              <?php $post_child_cat = array();
              foreach((get_the_category()) as $cats) {
                  $args = array( 'child_of' => $cats->cat_ID );
                  $categories = get_categories( $args );
                  if( $categories ) foreach( $categories as $category ) {
                  echo $category->cat_name; }
              } ?>
              
              尝试此

              我可以获得更多帮助,并提供了一个很棒的代码解决方案:

              // get top level terms
              $parents = get_terms( 'category', array( 'parent' => 0 ) );
              // get post categories
              $categories = get_the_terms( $post->ID, 'category' );
              // output top level cats and their children
              foreach( $parents as $parent ):
              // output parent name and link
              echo '<a href="' . get_term_link( $parent ) . '">' . $parent->name . '</a>: ';
              // initialize array to hold child links
              $links = array();
              foreach( $categories as $category ):
                  if( $parent->term_id == $category->parent ):
                      // put link in array
                      $links[] = '<a href="' . get_term_link( $category ) . '">' . $category->name .      '</a>';
                  endif;
              endforeach;
              // join and output links with separator
              echo join( ', ', $links );
              endforeach;
              
              //获取顶级术语
              $parents=get_术语('category',数组('parent'=>0));
              //获取帖子类别
              $categories=获取术语($post->ID,'categories');
              //输出顶级猫和它们的孩子
              foreach($parents作为$parent):
              //输出父名称和链接
              回声':';
              //初始化数组以保存子链接
              $links=array();
              foreach($类别作为$类别):
              如果($parent->term_id==$category->parent):
              //将链接放入数组
              $links[]='';
              endif;
              endforeach;
              //使用分隔符连接和输出链接
              回显联接(“,”,$links);
              endforeach;
              
              您可以使用
              数组映射
              ,以便只返回所需的类别。例如:

              array_map( function( $cat ) {
                      if ( $cat->parent != 0 ) {
                          return $cat;
                      }
                   },
                   get_the_category()
              );
              

              谢谢,但这只是输出帖子的所有子类别。它不是特定于每个父类别的。如果您只需要特定类别的子类别,您可以像
              $args=array('child\u of'=>''类别名称或id在此);
              然后
              $categories=get\u categories($args)这样做
              现在打印
              $categories
              Hmmm…像这样吗?可能不是,我尝试过,但没有得到任何输出: