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

WordPress问题:get_customizer_fonts_options过滤器钩子失效如何解决?

问题分析与解决思路

两种修改方式的对比

  1. 直接复制函数到子主题:可行,但不推荐。父主题的函数用if ( ! function_exists('get_customizer_fonts_options') )包裹,子主题先加载,定义该函数后会覆盖父主题版本。但缺点是父主题后续更新函数逻辑时,子主题的复制版本无法同步,容易引发兼容性问题。
  2. 使用add_filter修改:这是WordPress钩子机制的标准用法,更灵活且能兼容父主题更新,是推荐方案。你的代码未生效是因为存在几个关键错误。

你的过滤器代码错误点

  1. 无返回值:过滤器函数必须返回修改后的参数,否则WordPress会用null替代,导致字体列表不生效。
  2. 未定义变量$default:子主题函数的参数里没有$default,直接使用会触发PHP警告,中断逻辑。
  3. 未指定过滤器参数数量:原过滤器传递了$fonts和$context两个参数,add_filter默认只传递1个参数,需显式指定第四个参数为2才能让函数拿到$context。

修正后的过滤器代码

function hwp_control_font_list($fonts, $context) {
    // 根据上下文重新定义字体列表
    if ( $context == 'header' ) {
        $fonts = array(
            'inherit'       => esc_html__( 'Default font', 'cpschool' ),
            'quicksand'     => 'Quicksand',
            'raleway'       => 'Raleway',
            'russolo'       => 'Russolo',
            'roboto'        => 'Roboto',
        );
    } else {
        $fonts = array(
            'inherit'       => esc_html__( 'Default font', 'cpschool' ),
            'quicksand'     => 'Quicksand',
            'raleway'       => 'Raleway',
            'roboto'        => 'Roboto',
        );
    }
    
    // 必须返回修改后的数组
    return $fonts;
}
// 第四个参数2表示接受两个参数,与原过滤器的参数数量匹配
add_filter('get_customizer_fonts_options','hwp_control_font_list', 10, 2);

额外说明

如果需要保留父主题的部分字体,而不是完全替换,可以基于传入的$fonts数组修改,比如:

function hwp_control_font_list($fonts, $context) {
    // 清空原有字体,添加新字体
    $fonts = array();
    $fonts['inherit'] = esc_html__( 'Default font', 'cpschool' );
    
    if ( $context == 'header' ) {
        $fonts['quicksand'] = 'Quicksand';
        $fonts['raleway'] = 'Raleway';
        $fonts['russolo'] = 'Russolo';
        $fonts['roboto'] = 'Roboto';
    } else {
        $fonts['quicksand'] = 'Quicksand';
        $fonts['raleway'] = 'Raleway';
        $fonts['roboto'] = 'Roboto';
    }
    
    return $fonts;
}
add_filter('get_customizer_fonts_options','hwp_control_font_list', 10, 2);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:22:47