从 wordpress 中删除未使用的样式
Posted
技术标签:
【中文标题】从 wordpress 中删除未使用的样式【英文标题】:Remove unused styles from wordpress 【发布时间】:2021-04-10 03:20:50 【问题描述】:我正在尝试 dequeue/deregister 我的 wordpress 网站的所有帖子/页面中不必要的样式(WooCommerce,联系表格 7)。
尝试officalWooCommerce 禁用这些额外样式和脚本的方法,但由于样式仍加载到源代码中且 Google PageSpeed Insights 仍将它们显示为正在渲染,因此无法将它们出列;所以:
add_filter( 'woocommerce_enqueue_styles', 'jk_dequeue_styles' );
function jk_dequeue_styles( $enqueue_styles )
unset( $enqueue_styles['woocommerce-general'] ); // Remove the gloss
unset( $enqueue_styles['woocommerce-layout'] ); // Remove the layout
unset( $enqueue_styles['woocommerce-smallscreen'] ); // Remove the smallscreen optimisation
return $enqueue_styles;
// Or just remove them all in one line
add_filter( 'woocommerce_enqueue_styles', '__return_false' );
在functions.php
中不起作用。我也尝试像这样删除它们:
function remove_assets()
wp_dequeue_style('wc-block-vendors-style-css');
wp_deregister_style('wc-block-vendors-style-css');
add_action( 'wp_print_styles', 'remove_assets', PHP_INT_MAX );
指向特定样式 id wc-block-vendors-style-css
并设置 PHP_INT_MAX
。
它仍然没有删除那个特定的样式。
注意事项:
这个functions.php
属于一个自定义的子主题,重做了二十二十个WordPress主题,缓存已被清除。我已经尝试了 *** 中用户遇到类似问题的大部分答案,但没有一个有效。
主题中启用了 Woocommerce 支持。
如何在 2021 年使用 WordPress 5.6 使样式和脚本出列/取消注册?
【问题讨论】:
除了提供的答案...您的官方答案使用了不正确的功能。 gist.github.com/woogists/… @HowardE 那 sn-p 是我提出问题的 woocomerce 文档源的一部分,也尝试了那个,但不起作用。所有 WooCommerce 样式和脚本仍在加载 要点说add_filter( 'woocommerce_enqueue_styles', '__return_empty_array' );
你上面写的是__return_false
docs.woocommerce.com/document/disable-the-default-stylesheet/… 阅读此文;你的建议在那里,试过了,它不起作用..
在这种情况下,您应该确保您的函数正在实际运行。您可以尝试将某些内容转储到 error_log 以验证您的函数正在触发。
【参考方案1】:
根据@Aliakseyenka Ihar - 我已经测试过自己,
当我在wp_dequeue_style
之前添加deregister
- 它删除了供应商样式
function remove_assets()
wp_deregister_style('wc-block-vendors-style');
wp_dequeue_style('wc-block-vendors-style');
add_action( 'wp_enqueue_scripts', 'remove_assets', 11);
忍者之道
add_filter( 'wp_enqueue_scripts', 'jk_dequeue_styles', 99999 );
function jk_dequeue_styles( $enqueue_styles )
global $wp_styles;
unset ( $wp_styles->registered['wc-block-vendors-style'] );
【讨论】:
【参考方案2】:如果您的样式表已正确注册并入队,那么...
function dequeue_css()
wp_dequeue_style('wc-block-vendors-style');
wp_deregister_style('wc-block-vendors-style');
add_action('wp_enqueue_scripts','dequeue_css');
// add a priority if you need it
// add_action('wp_enqueue_scripts','dequeue_css',100);
或者你可以试试这个方法:
add_filter('style_loader_src', function($href)
if(strpos($href, "wc-block-vendors-style") !== false)
return false;
return $href;
);
【讨论】:
【参考方案3】:我发现为了移除这些样式,需要在活动主题中集成 Woocomerce。
add_theme_support( 'woocommerce' );
这解决了我的问题。
【讨论】:
以上是关于从 wordpress 中删除未使用的样式的主要内容,如果未能解决你的问题,请参考以下文章