具有用于显示子类别的条件逻辑的分类归档模板

时间:2014-11-20 作者:Adrian

我有一个自定义的帖子类型“downloads”,在下载菜单中,我有下载类别,分类名称是“downloadcats”。

我的下载页面使用一个页面模板,列出“downloadcats”分类法中的所有类别,这只显示父类别。单击一个类别时,它使用分类法归档模板(taxonomy downloadcats.php),我尝试使用条件来说明是否有子类别,显示列表,否则显示帖子列表。

在我的分类法中下载猫。php目前我有以下几点:

<?php 
$term = get_queried_object();

$children = get_terms( $term->taxonomy, array(
\'parent\'    => $term->term_id,
\'hide_empty\' => false
) );
// print_r($children); // uncomment to examine for debugging
if($children) { // get_terms will return false if tax does not exist or term wasn\'t found.

echo \'show child categories\';
} else {
    if (have_posts()) :
    while (have_posts()) : the_post(); ?>
    <li><?php the_post_thumbnail(\'post-image\'); ?>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
    <?php endif; ?>
<?php } ?>
条件语句是正确的,因为如果类别没有子类别,它会显示帖子,如果有子类别,它会显示“show child categories”,我需要知道其中的内容是什么,以使父类别的子类别出现。

谢谢

3 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

你离这里太近了,几乎可以闻到它的味道。以下是如何完成代码:

您已经将所有子项存储在一个名为$children. 要显示这些,只需foreach 环像这样的事情就行了。(您可以在此基础上进行扩展,只需执行var_dumpprint_r 获取可使用的可用对象)

foreach ( $children as $child ) {
    echo $child->name; //very basic, display term name
}
如果您需要获得该术语的链接,请使用get_term_link

SO网友:Adrian

再次感谢Pieter,已经为此工作了两天。。。为将来可能需要它的任何其他人提供的完整代码:

<?php 
$term = get_queried_object();

$children = get_terms( $term->taxonomy, array(
\'parent\'    => $term->term_id,
\'hide_empty\' => false
) );
// print_r($children); // uncomment to examine for debugging
if($children) { // get_terms will return false if tax does not exist or term wasn\'t found.

foreach ( $children as $child ) {
          $imgurl = z_taxonomy_image_url($category->term_id); 
          echo \'<li><img src="\'. $imgurl . \'"/><a href="\' . esc_attr(get_term_link($child, \'downloadcats\')) . \'" rel="bookmark">\' . $child->name . \'\' . \'\' . $child->description . \'</a></li>\'; 
}
} else {
    if (have_posts()) :
    while (have_posts()) : the_post(); ?>
    <li><?php the_post_thumbnail(\'post-image\'); ?>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
    <?php endif; ?>
<?php } ?>

SO网友:Pete

这是对上述解决方案的进一步清理,使其更加通用。。。

<?php 
$term = get_queried_object();
$children = get_terms( $term->taxonomy, array(
\'parent\'    => $term->term_id,
\'hide_empty\' => false
) );
// print_r($children); // uncomment to examine for debugging
if($children) { ?>
// this category has a child category
<?php } else { ?>
// this category doesn\'t have a child category
<?php } ?>  

结束

相关推荐