仅显示当前自定义分类的子类别(及其内容),并使用‘soronomy.php’

时间:2017-08-07 作者:Marcelo Henriques Cortez

因此,我需要显示一个页面,其中包含当前自定义分类法的子类别,以及它们各自的帖子。

我需要的是,当我单击sub-cat链接时,我会得到如下结果:

\'Tipos\' (custom taxonomy)
    - Auto (first sub-cat)
        - Sub-Item 1 (first sub-sub-cat)
            - Post 1
            - Post 2
        - Sub-Item 2 (second sub-sub-cat)
            - Post 1
            - Post 2
我有另一只sub-cat,但我不想看到它们,因为我点击了sub-cat“auto”内的sub-sub-cat。

自定义帖子类型的名称为“Produtos”

自定义分类法的名称为“Tipos”

我使用的页面是“分类tipos”。php

我知道我需要:

获取当前自定义分类法

通过我的代码,我获得了自定义分类法中的所有类别。我只想得到当前版本中的版本。

This is the code I tried:

Removed the code so it wont confuse anyone
你们能帮我点个火吗?谢谢

PROBLEM SOLVED. FINAL CODE (WORKING):

$term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );
echo $term->name;
$queried_object = get_queried_object();
$term_id = get_queried_object()->term_id;
$taxonomyName = "tipos";
$termchildren = get_term_children( $term_id, $taxonomyName );
if ($termchildren != false){
    foreach ($termchildren as $child) {
        $term2 = get_term_by( \'id\', $child, $taxonomyName );
        echo $term2->name; 
        $my_query = new WP_Query( array(
            \'post_type\' => \'produtos\',
            \'posts_per_page\' => -1,
            \'orderby\' => \'menu_order\',
            \'order\' => \'DESC\',
            \'tax_query\' => array(
                array(
                \'taxonomy\' => $taxonomyName,
                \'field\' => \'slug\',
                \'terms\' => $term2->slug,
                )
            ),
        ));
        while ($my_query->have_posts()) : $my_query->the_post();
        //content you want to show
        endwhile; 
        wp_reset_postdata();
    }
} else{
    $my_query2 = new WP_Query( array(
        \'post_type\' => \'produtos\',
        \'posts_per_page\' => -1,
        \'orderby\' => \'menu_order\',
        \'order\' => \'DESC\',
        \'tax_query\' => array(
            array(
            \'taxonomy\' => $taxonomyName,
            \'field\' => \'slug\',
            \'terms\' => $term->slug,
            )
         ),
    ));
    while ($my_query2->have_posts()) : $my_query2->the_post();
    //content you want to show
    endwhile; 
    wp_reset_postdata();
}

2 个回复
最合适的回答,由SO网友:Marcelo Henriques Cortez 整理而成

PROBLEM SOLVED. FINAL CODE (WORKING):

$term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );
echo $term->name;
$queried_object = get_queried_object();
$term_id = get_queried_object()->term_id;
$taxonomyName = "tipos";
$termchildren = get_term_children( $term_id, $taxonomyName );
if ($termchildren != false){
    foreach ($termchildren as $child) {
        $term2 = get_term_by( \'id\', $child, $taxonomyName );
        echo $term2->name; 
        $my_query = new WP_Query( array(
            \'post_type\' => \'produtos\',
            \'posts_per_page\' => -1,
            \'orderby\' => \'menu_order\',
            \'order\' => \'DESC\',
            \'tax_query\' => array(
                array(
                \'taxonomy\' => $taxonomyName,
                \'field\' => \'slug\',
                \'terms\' => $term2->slug,
                )
            ),
        ));
        while ($my_query->have_posts()) : $my_query->the_post();
        //content you want to show
        endwhile; 
        wp_reset_postdata();
    }
} else{
    $my_query2 = new WP_Query( array(
        \'post_type\' => \'produtos\',
        \'posts_per_page\' => -1,
        \'orderby\' => \'menu_order\',
        \'order\' => \'DESC\',
        \'tax_query\' => array(
            array(
            \'taxonomy\' => $taxonomyName,
            \'field\' => \'slug\',
            \'terms\' => $term->slug,
            )
         ),
    ));
    while ($my_query2->have_posts()) : $my_query2->the_post();
    //content you want to show
    endwhile; 
    wp_reset_postdata();
}
SO网友:Greeso

我想如果你明白了WordPress template hierarchy.

查看template hierarchy diagram, 假设你有类别和子类别,那么你可以通过多种方式实现你想要的。

Suggestion 1

    使用类别。php显示任何类别的帖子,包括子类别。

    也属于em类。php在顶部添加一个条件,以检测它是否是“父”类别。如果是,则显示父类别的子类别。

Suggestion 2

    使用类别。php显示任何类别的帖子,包括子类别。

    使用类别-$slug。php,并使用它显示该父类别的子类别。

    我想suggestion 2 如果您有一个或两个父类别就可以了。因为每次添加新的父类别时,都必须创建一个新的类别-$slug。php文件。因此,如果要创建多个父类别,请使用suggestion 1.

    此外,您也可以对自定义分类法使用相同的解决方案,但可以使用层次结构图来理解分类法文件(即,根据需要使用分类法、分类法和术语)。

结束

相关推荐

仅显示当前自定义分类的子类别(及其内容),并使用‘soronomy.php’ - 小码农CODE - 行之有效找到问题解决它

仅显示当前自定义分类的子类别(及其内容),并使用‘soronomy.php’

时间:2017-08-07 作者:Marcelo Henriques Cortez

因此,我需要显示一个页面,其中包含当前自定义分类法的子类别,以及它们各自的帖子。

我需要的是,当我单击sub-cat链接时,我会得到如下结果:

\'Tipos\' (custom taxonomy)
    - Auto (first sub-cat)
        - Sub-Item 1 (first sub-sub-cat)
            - Post 1
            - Post 2
        - Sub-Item 2 (second sub-sub-cat)
            - Post 1
            - Post 2
我有另一只sub-cat,但我不想看到它们,因为我点击了sub-cat“auto”内的sub-sub-cat。

自定义帖子类型的名称为“Produtos”

自定义分类法的名称为“Tipos”

我使用的页面是“分类tipos”。php

我知道我需要:

获取当前自定义分类法

通过我的代码,我获得了自定义分类法中的所有类别。我只想得到当前版本中的版本。

This is the code I tried:

Removed the code so it wont confuse anyone
你们能帮我点个火吗?谢谢

PROBLEM SOLVED. FINAL CODE (WORKING):

$term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );
echo $term->name;
$queried_object = get_queried_object();
$term_id = get_queried_object()->term_id;
$taxonomyName = "tipos";
$termchildren = get_term_children( $term_id, $taxonomyName );
if ($termchildren != false){
    foreach ($termchildren as $child) {
        $term2 = get_term_by( \'id\', $child, $taxonomyName );
        echo $term2->name; 
        $my_query = new WP_Query( array(
            \'post_type\' => \'produtos\',
            \'posts_per_page\' => -1,
            \'orderby\' => \'menu_order\',
            \'order\' => \'DESC\',
            \'tax_query\' => array(
                array(
                \'taxonomy\' => $taxonomyName,
                \'field\' => \'slug\',
                \'terms\' => $term2->slug,
                )
            ),
        ));
        while ($my_query->have_posts()) : $my_query->the_post();
        //content you want to show
        endwhile; 
        wp_reset_postdata();
    }
} else{
    $my_query2 = new WP_Query( array(
        \'post_type\' => \'produtos\',
        \'posts_per_page\' => -1,
        \'orderby\' => \'menu_order\',
        \'order\' => \'DESC\',
        \'tax_query\' => array(
            array(
            \'taxonomy\' => $taxonomyName,
            \'field\' => \'slug\',
            \'terms\' => $term->slug,
            )
         ),
    ));
    while ($my_query2->have_posts()) : $my_query2->the_post();
    //content you want to show
    endwhile; 
    wp_reset_postdata();
}

2 个回复
最合适的回答,由SO网友:Marcelo Henriques Cortez 整理而成

PROBLEM SOLVED. FINAL CODE (WORKING):

$term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );
echo $term->name;
$queried_object = get_queried_object();
$term_id = get_queried_object()->term_id;
$taxonomyName = "tipos";
$termchildren = get_term_children( $term_id, $taxonomyName );
if ($termchildren != false){
    foreach ($termchildren as $child) {
        $term2 = get_term_by( \'id\', $child, $taxonomyName );
        echo $term2->name; 
        $my_query = new WP_Query( array(
            \'post_type\' => \'produtos\',
            \'posts_per_page\' => -1,
            \'orderby\' => \'menu_order\',
            \'order\' => \'DESC\',
            \'tax_query\' => array(
                array(
                \'taxonomy\' => $taxonomyName,
                \'field\' => \'slug\',
                \'terms\' => $term2->slug,
                )
            ),
        ));
        while ($my_query->have_posts()) : $my_query->the_post();
        //content you want to show
        endwhile; 
        wp_reset_postdata();
    }
} else{
    $my_query2 = new WP_Query( array(
        \'post_type\' => \'produtos\',
        \'posts_per_page\' => -1,
        \'orderby\' => \'menu_order\',
        \'order\' => \'DESC\',
        \'tax_query\' => array(
            array(
            \'taxonomy\' => $taxonomyName,
            \'field\' => \'slug\',
            \'terms\' => $term->slug,
            )
         ),
    ));
    while ($my_query2->have_posts()) : $my_query2->the_post();
    //content you want to show
    endwhile; 
    wp_reset_postdata();
}
SO网友:Greeso

我想如果你明白了WordPress template hierarchy.

查看template hierarchy diagram, 假设你有类别和子类别,那么你可以通过多种方式实现你想要的。

Suggestion 1

    使用类别。php显示任何类别的帖子,包括子类别。

    也属于em类。php在顶部添加一个条件,以检测它是否是“父”类别。如果是,则显示父类别的子类别。

Suggestion 2

    使用类别。php显示任何类别的帖子,包括子类别。

    使用类别-$slug。php,并使用它显示该父类别的子类别。

    我想suggestion 2 如果您有一个或两个父类别就可以了。因为每次添加新的父类别时,都必须创建一个新的类别-$slug。php文件。因此,如果要创建多个父类别,请使用suggestion 1.

    此外,您也可以对自定义分类法使用相同的解决方案,但可以使用层次结构图来理解分类法文件(即,根据需要使用分类法、分类法和术语)。

相关推荐