如何制作自定义帖子和显示的子类别?

时间:2014-05-26 作者:fzishk

我已经创建了一个自定义帖子,其中包括书籍、食品等类别,并制作了一些子类别,如食品猫、比萨饼、快餐。但当我在侧栏中显示它们时,它显示的和子类别相同。就像:

.食品

披萨

.快餐

我希望它们显示如下:

.食品

-比萨饼

-快餐

这是我的函数代码。php

add_action(\'init\', \'products_register\');

function products_register() {
    $labels = array(
        \'name\' => _x(\'products\', \'post type general name\'),
        \'singular_name\' => _x(\'Products Item\', \'post type singular name\'),
        \'add_new\' => _x(\'Add New\', \'products item\'),
        \'add_new_item\' => __(\'Add New products Item\'),
        \'edit_item\' => __(\'Edit products Item\'),
        \'new_item\' => __(\'New products Item\'),
        \'view_item\' => __(\'View products Item\'),
        \'search_items\' => __(\'Search products\'),
        \'not_found\' =>  __(\'Nothing found\'),
        \'not_found_in_trash\' => __(\'Nothing found in Trash\'),
        \'parent_item_colon\' => \'\'
    );

    $args = array(
        \'labels\' => $labels,
        \'public\' => true,
        \'publicly_queryable\' => true,
        \'show_ui\' => true,
        \'query_var\' => true,
        //\'menu_icon\' => get_stylesheet_directory_uri() . \'/article16.png\',
        \'rewrite\' => true,
        \'capability_type\' => \'post\',
        \'hierarchical\' => false,
        \'menu_position\' => null,
        \'supports\' => array(\'title\',\'editor\',\'thumbnail\')
    ); 

    register_post_type( \'products\' , $args );

    register_taxonomy("productcategory", array("products"), array("hierarchical" => true, "label" => "Product Category", "singular_label" => "Product Category", "rewrite" => true));

}
以下是我在侧边栏上显示类别的代码:

<?php

$taxonomy = \'productcategory\';
$terms = get_terms($taxonomy); // Get all terms of a taxonomy

if ( $terms && !is_wp_error( $terms ) ) :
?>
    <ul>
        <?php foreach ( $terms as $term ) { ?>
            <li><a href="<?php echo get_term_link($term->slug, $taxonomy); ?>"><?php echo $term->name; ?></a></li>
        <?php } ?>
    </ul>
<?php endif;?>

3 个回复
SO网友:Eric Holmes

使用wp_list_categories. 它自动构建一个层次列表,并链接到它们。这应该是你想要的一切!

SO网友:Nikhil

试试这个,

$show_count = 0; // 1 for yes, 0 for no
$hierarchical = 1; // 1 for yes, 0 for no
$taxonomy = \'productcategory\';
$title = \'\';
$args = array(
  \'orderby\' => $orderby,
  \'show_count\' => $show_count,
  \'hierarchical\' => $hierarchical,
  \'taxonomy\' => $taxonomy,
  \'title_li\' => $title
);
<ul>
<?php
    wp_list_categories($args);
?>
</ul>
我试过这个,效果很好。我希望这会有所帮助。

SO网友:Patrice Poliquin

您可以使用WordPress功能wp_list_categories($args) 来创造你想要的东西。

注册分类法时,还需要设置hierarchicaltrue 以便能够嵌套自定义帖子类型类别。

之后,您可以创建这样的函数(使用basics$args):

<?php 
$args = array(
    \'hierarchical\' => true,
    \'taxonomy\' => \'productcategory\',
    \'hide_empty\' => false
);

wp_list_categories($args);

?>
并不是说我们正在使用\'taxonomy\' => \'productcategory\', 参数指示函数查看分类法本身。

您的HTML输出如下所示。

<ul>    
    <li class="cat-item cat-item-18"><a href="http://wordpress.local/productcategory/books/" >Books</a></li>
    <li class="cat-item cat-item-19"><a href="http://wordpress.local/productcategory/foods/" >Foods</a>
        <ul class=\'children\'>
            <li class="cat-item cat-item-21"><a href="http://wordpress.local/productcategory/fastfood/" >Fastfood</a></li>
            <li class="cat-item cat-item-20"><a href="http://wordpress.local/productcategory/pizza/" >Pizza</a></li>
        </ul>
    </li>
</ul>
按照您最初的开发方式,可以得到一个列表。但它不会显示为层次结构元素。

之后,您只需使用CSS来添加arroundpadding 在…上.children

HTML Output of the code

希望能有所帮助。

结束

相关推荐

使用Get_Categories显示类别的图像,或显示任何子帖子中的图像

我正在使用get\\u categories列出父类别的子类别。我想使用get\\u categories输出将图像添加到子类别。我可以从我正在使用get\\u categories的类别的子类别(即父类别的子类别)的任何帖子中获取特色图像。我不想显示任何其他孙儿信息,只想从每组类别的孩子中获得一张特色图片我当前使用的代码是$args = array(\'child_of\' => 1 ); $categories = get_categories($args); forea