如何将当前自定义分类插件添加到Body类

时间:2015-06-30 作者:adriand

我的主题使用名为“kbsection”的自定义分类法,并且设置了很多节(而不是类别)。还有一个自定义的帖子类型,帖子被分配给各个部分。

我需要根据帖子所属的部分来设置不同的标题样式。因此,属于A部分的帖子的标题背景与属于B部分的帖子的标题背景不同。如果一篇帖子属于多个部分,那么选择哪个并不重要。它始终可以是数组中的第一个。

我想我需要的是得到当前的“section”slug并以某种方式将其添加为body类。我一直在尝试很多不同的方法,但似乎没有一种适合我。我在下面找到了一段代码,但这当然只适用于类别,而不适用于我的“部分”。请帮忙。

add_filter(\'body_class\',\'add_category_to_single\');
function add_category_to_single($classes, $class) {
    if (is_single() ) {
        global $post;
        foreach((get_the_category($post->ID)) as $category) {
            // add category slug to the $classes array
            $classes[] = $category->category_nicename;
        }
    }
    // return the $classes array
    return $classes;
}

1 个回复
SO网友:Robert hue

您可以使用类似的方法get_the_terms.下面是函数。

function add_taxonomy_to_single( $classes ) {
    if ( is_single() ) {
        global $post;
        $my_terms = get_the_terms( $post->ID, \'custom-taxonomy\' );
        if ( $my_terms && ! is_wp_error( $my_terms ) ) {
            foreach ($my_terms as $term) {
                $classes[] = $term->slug;
            }
        }
        return $classes;
    }
}
add_filter( \'body_class\', \'add_taxonomy_to_single\' );
不要忘记在上面的代码中更改自定义分类法的名称。我用过custom-taxonomy 例如

编辑1:

要在body类中添加第一个分类名称,请在此添加更新的代码。

function add_taxonomy_to_single( $classes ) {
    if ( is_single() ) {
        global $post;
        $my_terms = get_the_terms( $post->ID, \'custom-taxonomy\' );
        if ( $my_terms && ! is_wp_error( $my_terms ) ) {
            $classes[] = $my_terms[0]->slug;
        }
        return $classes;
    }
}
add_filter( \'body_class\', \'add_taxonomy_to_single\' );

结束

相关推荐

Numeric slug on child post

我知道有两种不同类型的自定义帖子类型:-页面帖子。哪里page 支持子页,以及post 没有。然而,当我试图在slug中创建一个只有数字的子页面时,wordpress将-2放在后面。示例:/posttype/父/10-2/而不是我想要的:/posttype/父/10/为什么会这样,我该如何解决?我已经搜索了好几个小时,但我似乎找不到解决方案,除了Wordpress中可能存在的一个限制,它与date permalink系统存在冲突。我没有使用这个系统,但这是真的吗?编辑,更多信息:没有任何帖子会与我的永久链