在WordPress中仅显示一个层级子类别

时间:2013-03-01 作者:user28212

此代码使用Taxonomy Images 用于显示类别图像的插件。此代码在父类别页面中显示主类别的子类别(category.php), 但我只想在页面中显示一级子类别,例如

硬件(父类别)

监视器(硬件的一级子类别)

三星(二级子类别)

当用户单击硬件链接时,他应该只看到监视器子类别链接,第二次单击监视器时,他应该看到三星类别链接,当他单击三星时,子类别lcd将显示。我应该如何更改此代码以实现我的承诺

我的代码:

<?php
$cat_id = get_query_var(\'cat\');
$catlist = get_categories(\'hide_empty=0&child_of=\' . $cat_id);
echo "<ul>";

foreach($catlist as $categories_item)
{
echo \'<h1><a href="\' . get_category_link( $categories_item->term_id ) . \'" title="\' . sprintf( __( "View all products in %s" ), $categories_item->name ) . \'" \' . \'>\' . $categories_item->name.\'</a> </h1> \';

echo \'<div class="categoryoverview clearfix">\';
    $terms = apply_filters( \'taxonomy-images-get-terms\', \'\' );
    if ( ! empty( $terms ) ) {

      foreach( (array) $terms as $term ) {
        if($term->term_id == $categories_item->term_id) {
           print \'<a href="\' . esc_url( get_term_link( $term, $term->taxonomy ) ) . \'">\' . wp_get_attachment_image( $term->image_id, \'thumbnail\' );
           echo \'</a>\';
        }
    }
    echo \'<p>\'. $categories_item->description; echo \'</p>\';
}
echo \'</div>\';
}
echo "</ul>";
?>

3 个回复
SO网友:ksr89

父类别(硬件)您应该通过使用获取所有父类别来在任何页面中显示此类别

$parent_category = get_categories(array(\'orderby\' => \'name\',\'parent\' => 0));
foreach($categories as $category) {
    echo \'<p>Category: <a href="\' . get_category_link( $category->term_id ) . \'" title="\' . sprintf( __( "View all posts in %s" ), $category->name ) . \'" \' . \'>\' . $category->name.\'</a> </p> \';
}
当您单击类别时,它将转到category.php 页在类别中。php页面您将获得父级为hardware的所有类别。

get_categories(array(\'parent\' => \'hardware_category_id/its_sub_category_id\',
                     \'hide_empty\' => 1,));
然后,您应该显示硬件的所有子类别。在中显示这些类别<a></a> 标记为前面显示的内容。每当您单击子类别链接时,它将再次转到category.php 页面将以类别id作为子类别id,并显示子类别的子类别。这一切都是循环的。

SO网友:Andy Macaulay-Brook

这个Taxonomy Images 您使用的插件可以处理所有这些问题。过滤器taxonomy-images-get-terms 可以接受第三个参数,该参数可以包括基础WP函数的参数数组get_terms().

任何不使用此插件的人都可以调用get_terms 相反

如果指定当前类别作为父参数,则应返回所有子类别。只是孩子,一个层次,不是所有更深层次的后代。

所以你可以在你的主题category.php 生成当前类别的直接子类别的单个深度显示。

$cat_id = get_query_var(\'cat\');
$catlist = apply_filters( 
    \'taxonomy-images-get-terms\', 
    \'\', 
    array(
        \'parent\' => $cat_id,
    )
);

foreach ( $catlist as $cat ) {

    echo \'<a href="\';
    echo esc_url( get_term_link( $cat->term_id, $cat->taxonomy ) );
    echo \'">\';

    echo wp_get_attachment_image( $cat->image_id, \'thumbnail\' );

    echo \'<p>\';
    echo $cat->description; 
    echo \'</p>\';

    echo \'</a>\';
}

SO网友:Mindaugas Jakubauskas

你可以使用wp_list_categories 相反它具有设置深度的能力。

结束

相关推荐

Custom post query by taxonomy

我正在使用WordPress 3.5。我的问题是,$args = array( \'post_type\' => array(\'product\', \'comic\', \'magazine\'), \'taxonomy\' => \'Genres\', \'term\' => \'hot\', \'posts_per_page\' => 10 ); $the_query = new WP_Quer