自定义分类中的类别和子类别

时间:2013-08-18 00:39:21

标签: wordpress categories taxonomy

我找到并使用以下代码在我的网站上显示默认分类法“类别”的子类别,但我创建了一个自定义分类,并且不能改变代码,以便他为新的分类法做同样的事情,请帮忙

 <?php

if(is_category()) {
    $subcategories = get_terms('category', 'parent='.get_query_var('cat'));

    if(empty($subcategories)) {
        $thiscat = get_term(get_query_var('cat'),'category');
        $subcategories = get_terms('category', 'parent='.$thiscat->parent.'');
    }
    if(empty($subcategories)) $subcategories = array();
    if(!empty($subcategories)) {
        echo '<ul>';

        foreach($subcategories as $subcat) {
            if(get_query_var('cat') == $subcat->term_id) $current = ' current-cat'; else $current = '';
            echo '
            <li class="cat-item cat-item-'.$subcat->term_id.$current.'">
                <a href="'.get_category_link( $subcat->term_id ).'" title="'.$subcat->description.'">'.$subcat->name.'</a>
            </li>';

        }
        echo '</ul>';
    }
}
else {
    // If no current cat query, just get the top level ones using wp_list_categories.
    ?>
    <ul>
        <?php wp_list_categories('title_li=&depth=1');?>
    </ul>
    <?php
}
?>

2 个答案:

答案 0 :(得分:0)

事实证明,代码可以按照我的意愿运行,但如果它可以优化,我将很乐意帮助...此代码显示分类法主要类别的子类别。 如果有人应该使用,只需将“auto”更改为您的分类名称即可。我的自定义分类是“自动”

    <?php

if(is_tax()) {
    $subcategories = get_terms('auto', 'parent='.get_queried_object()->term_id);

    if(empty($subcategories)) {
        $thiscat = get_term(get_queried_object()->term_id,'auto');
        $subcategories = get_terms('auto', 'parent='.$thiscat->parent.'');
    }
    if(empty($subcategories)) $subcategories = array();
    if(!empty($subcategories)) {
        echo '<ul>';

        foreach($subcategories as $subcat) {
            if(get_queried_object()->term_id == $subcat->term_id) $current = ' current-cat'; else $current = '';
            echo '
            <li class="cat-item cat-item-'.$subcat->term_id.$current.'">
                <a href="'.get_term_link($subcat,'auto').'" title="'.$subcat->description.'">'.$subcat->name.'</a>
            </li>';

        }
        echo '</ul>';
    }
}
else {
    // If no current cat query, just get the top level ones using wp_list_categories.
    ?>
    <ul>
        <?php wp_list_categories('taxonomy=auto&title_li=&depth=1');?>
    </ul>
    <?php
}
?>

答案 1 :(得分:0)

感谢您更正的代码。 我已经为那些想要在循环结束后退出循环的人添加了一些内容。我没有显示父类别树,而是修改了一些位,以显示该特定类别下的产品或服务的图像和标题。以下是代码

if(is_tax()) {
    $subcategories = get_terms('product_categories', 'parent='.get_queried_object()->term_id);
  // this is the change which display all the products in the specific category if it does not have child categories
    if(empty($subcategories)) {
        $thiscat = get_term(get_queried_object()->term_id,'product_categories');
    if (have_posts('thiscat')):while (have_posts('thiscat')) : the_post('thiscat');{?>
        <div class="box cat-item-<?php $subcat->name.$current ;?>" style="min-height: 231px; margin-bottom:10px">
            <a href="<?php the_permalink($post->ID); ?>" title="<?php $post->name ;?>"> <?php the_post_thumbnail('thumbnail');?></a>
        <h5><a title="<?php the_title(); ?>" href="<?php the_permalink($post->ID); ?>"><?php the_title(); ?></a></h5></h5></div>
                    <?php } 

                    endwhile;   
                    else : {

                                ?>
        <div class="box  cat-item cat-item-<?php $subcat->name.$current; ?>" style="min-height: 231px; margin-bottom:10px">
        <h5>Products will be upadated later. Do visit Later </h5 >          
        </div>
                                        <?php }


                endif;
}
if(empty($subcategories)) $subcategories = array();
if(!empty($subcategories)) {
    echo '<div class="fixed-row clearfix dynamic-fixedRow-735" id="row_order_2">';

    foreach($subcategories as $subcat) {
        if(get_queried_object()->term_id == $subcat->term_id) $current = ' current-cat'; else $current = '';
        echo '
        <div class="box cat-item cat-item-'.$subcat->name.$current.'" style="min-height: 231px; margin-bottom:10px"><h5>
            <a href="'.get_term_link($subcat,'product_categories').'" title="'.$subcat->description.'">'.$subcat->name.'</a>
        </h5></div>';

    }