WordPress开发:禁用谷歌字体

WordPress 的一些主题及后台由于使用了 Google 字体,使得 WordPress 加载非常慢,从网上找到两种禁用谷歌字体的代码,但现在都不起作用;估计是因为新版 Wordpress 使用了古登堡编辑器的原因,加载 google fonts 的方式有了改变。而网上的大多可以搜到的文章都比较早了;

通过参考 Wordpress 的 Disable RemoveGoogle Fonts 插件(该插件只是禁用了前台的谷歌字体加载),改进后同时支持后台禁用谷歌字体,实测有效。

将下面的代码编辑到当前主题的 functions.php 文件

/*
 * 通过Link标签的src地址判断后反注册禁用谷歌字体加载.
 */
if (!function_exists('disable_google_fonts')) {
    function drgf_dequeueu_fonts()
    {
        global $wp_styles;

        if (!($wp_styles instanceof WP_Styles)) {
            return;
        }

        $allowed = apply_filters('drgf_exceptions', ['olympus-google-fonts']);

        foreach ($wp_styles->registered as $style) {
            $handle = $style->handle;
            $src = $style->src;
            $exist = strpos($src, 'fonts.googleapis');
            if (false !== $exist) {
                if (!array_key_exists($handle, array_flip($allowed))) {
                    wp_dequeue_style($handle);
                    wp_deregister_style($handle);
                    wp_register_style($handle, '');
                }
            }
        }
    }
    add_action('wp_enqueue_scripts', 'drgf_dequeueu_fonts', 999);
    add_action('admin_enqueue_scripts', 'drgf_dequeueu_fonts', 999);
    add_action('login_enqueue_scripts', 'drgf_dequeueu_fonts', 999);

    /*
     * 禁用 Elementor 插件加载的谷歌字体.
     */
    add_filter('elementor/frontend/print_google_fonts', '__return_false');
}

将以上代码中的 "fonts.googleapis" 改成其他样式脚本的地址特征也可以起到同样的去除效果;

注意:以下是已经失效的两种禁用谷歌字体的代码

无效代码一

if (!function_exists('remove_wp_open_sans')) {
    function remove_wp_open_sans() {
        wp_deregister_style( 'open-sans' );   
        wp_register_style( 'open-sans', false );   
        wp_enqueue_style('open-sans',''); 
    }
    //add_action('wp_enqueue_scripts', 'remove_wp_open_sans');
     add_action('admin_enqueue_scripts', 'remove_wp_open_sans');
}

无效代码二

function disable_google_fonts($translations, $text, $context, $domain ) {
    $google_fonts_contexts = array(
        'Open Sans font: on or off',
        'Lato font: on or off',
        'Source Sans Pro font: on or off',
        'Bitter font: on or off'
    );
    if($text == 'on' && in_array($context, $google_fonts_contexts))
    {
        $translations = 'off';
    }

    return $translations;
}
add_filter('gettext_with_context', 'disable_google_fonts', 888, 4);
上一篇
下一篇