我怎样才能改进这种分类治疗方法呢?

时间:2017-09-12 作者:Twissell

我想在模板中列出某个父类别的子类别category-id.php 带有以下代码

function the_categories_navigations_trees() {

  $cat_data = get_categories( 
          array ( 
              \'parent\' => 42, 
              \'hide_empty\' => 0 
          ) 
      );

  if ( $cat_data ) {
       $cat_links = \'\';
       foreach ( $cat_data as $one_cat_data)
         $cat_links .= sprintf( \'<a href="%s">%s</a><br/>\', 
         get_category_link( $one_cat_data->term_id ) , $one_cat_data->cat_name );
         printf( \'<div class="nav-cat">%s</div>\', $cat_links ); 
  }
}
问题是,我需要为所有有子类别/子类别复制此函数,只替换类别id。这确实是一项开销。

因此,我如何优化我的方法。可能有一些方法可以对所有模板使用一个且只有一个函数来列出子类别。

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

这就是功能所在。php用于。将函数添加到函数中。php,只需稍加修改,就可以传递要获取其子级的类别:

function the_categories_navigations_trees( $parent ) {
    $cat_data = get_categories( array( 
        \'parent\'     => $parent, 
        \'hide_empty\' => 0 
    ) );

    if ( $cat_data ) {
        $cat_links = \'\';

        foreach ( $cat_data as $one_cat_data) {
            $cat_links .= sprintf( 
                \'<a href="%s">%s</a><br/>\',
                get_category_link( $one_cat_data->term_id ),
                $one_cat_data->cat_name
            );
        }

        printf( \'<div class="nav-cat">%s</div>\', $cat_links ); 
    }
}
请参见$parent 函数中的参数?

现在,在模板中,您可以使用它来获取特定父级的输出:

<?php the_categories_navigations_trees( get_queried_object_id() ); ?>
get_queried_object_id() 将获取您当前查看的类别的ID。如果需要的话,用特定的东西来代替它。

结束