问题描述
我为 Twenty Twelve v1.0 创建了一个小孩主题,我想删除 Open Sans 字体。
Open Sans 被添加到 Twenty 十二的 functions.php 中:
wp_enqueue_style( 'twentytwelve-fonts', add_query_arg( $query_args, "$protocol://googlefonts.admincdn.com/css" ), array(), null );
我试图在我的 childtheme 的 functions.php(参见下面的例子) 中注销/排除样式表,但不起作用:
function example_scripts_styles() {
wp_deregister_style( 'twentytwelve-fonts' );
wp_dequeue_style( 'twentytwelve-fonts' );
}
add_action( 'wp_enqueue_scripts', 'example_scripts_styles' );
任何想法如何我可以删除这个文件?谢谢!
最佳解决方案
找到答案 here:
Script dequeuing calls should be added to the wp_print_scripts action hook(..). This is because scripts are typically enqueued on the wp_enqueue_script hook, which happens early in the wp_head process. The wp_print_scripts hook happens right before scripts are printed, and thus is latest in the process. (Otto)
遵循相同的逻辑,我们可以使用 wp_print_styles
来删除 Open Sans 字体:
function remove_open_sans() {
wp_dequeue_style( 'twentytwelve-fonts' );
}
add_action('wp_print_styles','remove_open_sans');
这样做了。
次佳解决方案
在 WP 3.8+以上,我使用 thetrickster’s gist 从前端样式成功删除了’Open Sans’:
<?php
// Remove Open Sans that WP adds from frontend
if (!function_exists('remove_wp_open_sans')) :
function remove_wp_open_sans() {
wp_deregister_style( 'open-sans' );
wp_register_style( 'open-sans', false );
}
add_action('wp_enqueue_scripts', 'remove_wp_open_sans');
// Uncomment below to remove from admin
// add_action('admin_enqueue_scripts', 'remove_wp_open_sans');
endif;
?>
‘Open Sans’ 可以是插件依赖。
第三种解决方案
在 Twenty Twelve v1.1 的 functions.php 中,注释说明了如何从 wp_enqueue_scripts
钩子中删除样式表:
function mytheme_dequeue_fonts() {
wp_dequeue_style( 'twentytwelve-fonts' );
}
add_action( 'wp_enqueue_scripts', 'mytheme_dequeue_fonts', 11 );
您的尝试不奏效在 add_action()
中缺少 priority parameter 。父主题以默认优先级为 10 的方式排列样式,因此子主题必须以优先级 11 对齐。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。