在自定义分类页面上列出父类别中的子类别

时间:2014-09-02 作者:ultraloveninja

我正在对当前正在处理的主题进行一些更新。

我已经将一组下面有自定义帖子项的类别移动到一个父类别中,该类别都在自定义分类中。

e、 g.:

Parent Category
-Child Category
--Item
--Item
--Item
-Child Category
--Item
--Item
-Child Category
--Item
--Item
--Item
我可以在taxonomy-custom-tax-name.php 页面,但当我单击父类别的链接时,它列出了与子类别关联的所有项目,而不仅仅是子类别本身。

e、 g.:

--Item
--Item
--Item
--Item
--Item
...etc.
我正在尝试获取它,因此它只列出子类别,并提供一个链接,然后转到包含该类别所附项目的页面:

e、 g.:

-Child Category
-Child Category
-Child Category
-Child Category
我当前正在自定义分类页面上使用此循环:

<?php global $query_string; query_posts( $query_string . \'&posts_per_page=-1\' ); if (have_posts()) : while (have_posts()) : the_post(); ?>

我不确定是否需要更改循环语句,或者是否需要创建if else 案件陈述?

我已经尝试过创建单独的自定义分类页面,以及使用父类别名称创建单独的类别页面,但它仍然没有按照我尝试的方式工作。

我希望这是有意义的。这是我第一次真正深入到自定义分类法中,所以我试图了解一下逻辑,似乎有不止一种方法可以让所有内容正确显示。

2 个回复
SO网友:mrwweb

两件事!

1) 不使用query_posts()! 相反,对于这种情况,请使用pre_get_posts 修改查询的操作。

2) 我认为您实际上根本不想在这里使用循环(因此query_posts() 也没有pre_get_posts 甚至WP_Query). 相反,我认为你在寻找wp_list_categories. 在模板中,您可能会执行以下操作(未测试):

<?php
// the taxonomy archive term page\'s term id
$queried_object = get_queried_object();
$term_id = $queried_object->term_id;

$list_child_terms_args = array(
    \'taxonomy\' => \'YOUR_CUSTOM_TAXONOMY_SLUG_HERE\',
    \'use_desc_for_title\' => 0, // best practice: don\'t use title attributes ever
    \'child_of\' => $term_id // show only child terms of the current page\'s
);
?>
<ul>
    <?php wp_list_categories( $list_child_terms_args ); ?>
</ul>

SO网友:Sneha Parmar

<?php  
$categories = get_categories();      // Current Category will retrive
foreach ( $categories as $category ) {
$cat = $category->name;              // Parent Category name
$category = get_category_by_slug( $cat );

$args = array(
\'type\'                     => \'post\',
\'child_of\'                 => $category->term_id,
\'orderby\'                  => \'name\',
\'order\'                    => \'ASC\',
\'hide_empty\'               => FALSE,
\'hierarchical\'             => 1,
\'taxonomy\'                 => \'category\',
); 

$child_categories = get_categories($args );

$category_list = array();
$category_list[] = $category->term_id;

if ( !empty ( $child_categories ) ){    // If child Category available
    foreach ( $child_categories as $child_category ){    // Print Child Category
        $category_list[] = $child_category->term_id;
        echo "main cat:". $cat; echo "sub cat:". $child_category->cat_name."<br/>";
    }
}
}
粘贴到php文件以获取子类别。。。

结束

相关推荐

Show Pages in Categories

通过将此代码添加到函数中,我创建了category函数。php:function page_category() { register_taxonomy_for_object_type(\'category\', \'page\'); } // Add to the admin_init hook of your theme functions.php file add_action( \'init\', \'page_category\' ); 但问