You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用apply_filters为全局容器创建自定义过滤器添加额外类?

为全局容器自定义类过滤器的实现方法

1. 修改容器的HTML输出

先把原有的容器代码改成支持过滤的写法,核心是用apply_filters包裹类名,替换固定的content-wrap:

<div class="<?php echo apply_filters( 'content_wrap_classes', 'content-wrap' ); ?>">

这里第一个参数content_wrap_classes是自定义的过滤器名称,第二个参数是默认基础类名,确保默认情况下容器仍保留content-wrap类。

2. 注册默认过滤器(可选但规范)

可以注册一个默认过滤器函数,方便后续统一管理,逻辑和body类的过滤器一致:

/**
 * 全局容器默认类处理
 */
function jm_default_content_wrap_classes( $classes ) {
    // 可在此添加全局默认的额外类,或直接返回传入的基础类
    return $classes;
}
add_filter( 'content_wrap_classes', 'jm_default_content_wrap_classes' );

3. 按需添加自定义类

现在就能在主题的functions.php或特定页面模板里,通过挂钩这个过滤器来添加不同的类:

示例1:添加row类

/**
 * 给全局容器添加row类
 */
function jm_add_row_class_to_content_wrap( $classes ) {
    // 将字符串类名转成数组,避免重复添加
    if ( is_string( $classes ) ) {
        $classes = explode( ' ', $classes );
    }
    $classes[] = 'row';
    // 转回字符串返回
    return implode( ' ', $classes );
}
add_filter( 'content_wrap_classes', 'jm_add_row_class_to_content_wrap' );

示例2:根据页面条件添加full类

比如检测到当前页面使用全屏模板时,添加full类:

// 判断当前页面是否使用全屏模板
if ( is_page_template( 'template-full-width.php' ) ) {
    function jm_add_full_class_to_content_wrap( $classes ) {
        if ( is_string( $classes ) ) {
            $classes = explode( ' ', $classes );
        }
        $classes[] = 'full';
        return implode( ' ', $classes );
    }
    add_filter( 'content_wrap_classes', 'jm_add_full_class_to_content_wrap' );
}

这样处理后,容器的类名会根据添加的过滤器动态变化,实现你需要的<div class="content-wrap row">或<div class="content-wrap full">效果。

内容的提问来源于stack exchange,提问作者James Mitchell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:07:09