Wordpress:使用add_filter函数向div添加一个类

时间:2018-05-29 11:10:02

标签: wordpress

我之前使用add_filter()函数将一个类添加到正文中,如下所示:

add_filter( 'body_class', 'add_custom_class' );
function add_custom_class( $classes ) {
    if ( is_single() ) {
        $classes[] = 'post';
        }
    return $classes;
}

我希望能够沿着这些行使用某些东西来为div添加一个类:

add_filter( 'div_class', 'add_custom_class' );
function add_custom_class( $classes ) {
    if ( is_single() ) {
        $classes[] = 'post';
        }
    return $classes;
}

或更好:

add_filter( 'div_class', 'add_custom_class' );
function add_custom_class( $classes ) {
    if ( is_single() ) {
        $classes[] = 'post';
        }
    else if ( is_singular( 'custom-post-type' ) ) {
        $classes[] = 'custom-post-type-class';
        }
    return $classes;
}

然后像我这样在我的主题中拉上课程:

<div class="wrapper <?php echo div_class(); ?>">

这可能吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

是的,这完全有可能。

function so50582899_div_class($classes) {
    global $post;
    if(is_single()) {
        $classes[] = 'single-post';
    } elseif(is_page()) {
        $classes[] = 'page'
    }

    return $classes;
}
add_filter('post_class', 'so50582899_div_class');

然后您可以将其称为<div class="<?php post_class(); ?>">

编辑:要删除所有现有类,请将$classes = array();添加到该函数的顶部。这将重置返回的类,并仅返回您在函数中设置的类。

所以它最终会像:

function so50582899_div_class($classes) {
    global $post;
    $classes = array();

    if(is_single()) {
        $classes[] = 'single-post';
    } elseif(is_page()) {
        $classes[] = 'page'
    }

    return $classes;
}
add_filter('post_class', 'so50582899_div_class');

参考:https://codex.wordpress.org/Function_Reference/post_class#Add_Classes_By_Filters