首页 > 解决方案 > Wordpress:使用 add_filter 函数将类添加到 div

问题描述

我以前使用该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(); ?>">

这可能吗?提前致谢!

标签: wordpress

解决方案


是的,这是完全可能的。

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


推荐阅读