Body类中的自定义分类及其父级插件

时间:2015-11-14 作者:Hans Ullrich

我在stackoverflow上尝试了很多答案,但都没有找到解决问题的方法。我创建了一个名为ph_products 和具有名称的自定义分类法ph_category.

然后,我为该自定义帖子类型创建了一些类别,如下所示:

blue-products
    blue-sub-products
green-products
red-products
我需要有如下身体课程:

打开时ph_products-archive page应该有一个类的主体中有这个slug

当在一个父类别上时,相应的slug应该在body类中

当我在其中一个子类别存档页上时,我还需要父类别类

例如,我在blue-sub-products 我想要的存档页blue-products, ph_products-archive, blue-sub-products 在body类中

当然,我也需要在产品的各个单一视图中包含所有这些类。

我使用这段代码添加所需的类:

(感谢https://alexanderdejong.com/wordpress/add-custom-taxonomies-body-class)

function atp_custom_taxonomy_body_class($classes, $class, $ID) {

    $taxonomies_args = array(
        \'public\' => true,
        \'_builtin\' => false,
    );

    $taxonomies = get_taxonomies( $taxonomies_args, \'names\', \'and\' );
    foreach ($taxonomies as $taxonomy) {

        $terms = get_the_terms( (int) $ID, $taxonomy );

        if ( ! empty( $terms ) ) {
            foreach ( (array) $terms as $order => $term ) {
                if ( ! in_array( $term->slug, $classes ) ) {
                    $classes[] = $term->slug;
                }
            }
        }
    }

    return $classes;
}
add_filter( \'body_class\', \'atp_custom_taxonomy_body_class\', 10, 3 );
但这会增加一些很奇怪的课程,比如当我在ph_products-archive 第I页还可以获得张贴在那里的最后一个项目的类别标记,因此如果最后一个项目在类别中blue-products, blue-sub-products 虽然我不在这些分类页面上,但我也得到了这两个Slug类

或者当我在blue-products-archive 第页我还得到blue-sub-products 身体类的鼻涕虫。

我如何才能只获得如上所述所需的类?

2 个回复
SO网友:Kvvaradha

从上面的函数中,您查询了所有分类法。不具体。

我的意思是,这不仅仅是为了你的自定义分类法。为整体工作。

SO网友:Ray Flores

您需要使用get_term_children( $term, $taxonomy ) 然后,如果孩子们使用子术语作为课堂。。。如果不是,请使用分类法。

如果您确实想在子分类法归档中,请尝试使用taxonomy templates

相关推荐