输出子类别标题和类别页面上的项目

时间:2015-09-04 作者:John

当用户单击一个类别时,如果有子类别,我希望它显示在h2中,然后是它下面的项目。

例如:

点击衬衫

参见标题中的Hanes,然后是项目HA101、HA102、HA103

参见标题中的吉尔丹,然后是项目GI101、GI102、GI103

我想我需要编辑一个PHP模板文件,但不确定是哪一个--需要一些帮助。

谢谢

1 个回复
SO网友:Maikal

https://developer.wordpress.org/files/2014/10/template-hierarchy.png

在这里,您可以查看最适合您的模板文件名。

https://codex.wordpress.org/Function_Reference/get_term_children

使用这些函数可以获取当前术语(类别)子项。请注意,在taxonomy.php 可以使用的模板$wp_query->get_queried_object_id(); 获取当前信息term_id you\'r查看

使用new WP_Query 在子术语循环中回显帖子以从子术语获取帖子new WP_Query( array( \'{taxonomy}\' => {child_term_id} ) );

这里有一个例子:分类法。php(或者更好的category.php,如果您使用的是类别分类法)[缺少get\\u header()和get\\u footer()]

global $wp_query;
$cat_id = $wp_query->get_queried_object_id();
$cat_childs = get_term_children( $cat_id, \'category\' );
if( $cat_childs ) {
  foreach ( $cat_childs as $cat_child ) {
    $child = get_term_by( \'id\', $cat_child, \'category\' );
    $child_posts = new WP_Query( array(
      \'post_type\' => \'post\',
      \'posts_per_page\' => -1,
      \'tax_query\' => array(
        array(
            \'taxonomy\' => \'category\',
            \'terms\'    => $child->term_id,
            \'include_children\' => false
        )
      )
    ) );
    if( $child_posts->have_posts() ) {
      echo \'<h1>\' . $child->name . \'</h1>\';
      while( $child_posts->have_posts() ) : $child_posts->the_post();
        the_title();
        echo "\\r\\n";
      endwhile;
      wp_reset_postdata();
    } 
  }
} else {
 // there\'s no category childs
}