【问题标题】:How to remove the woocommerce.css file from the theme?如何从主题中删除 woocommerce.css 文件?
【发布时间】:2021-11-19 02:33:58
【问题描述】:

我正在使用 WordPress,并安装了 Woocommerce 插件。

我在我的主题中添加了模板文件夹并开始自定义我的主题。

现在,我必须从我的主题中删除Woocommerce.css,我在官方网站上找到了代码here

我在function.php中添加了相同的代码

add_filter( 'woocommerce_enqueue_styles', '__return_empty_array' );

add_filter( 'woocommerce_enqueue_styles', '__return_false' );

但两个答案都不起作用。我已经安装了 5.7.1 Woocommerce。

我该如何解决这个问题?

function.php

function customtheme_scripts() {
    wp_enqueue_style( 'customtheme-style', get_stylesheet_uri(), array(), time() );
    wp_style_add_data( 'customtheme-style', 'rtl', 'replace' );
    wp_enqueue_script( 'customtheme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), _S_VERSION, true );
    if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
        wp_enqueue_script( 'comment-reply' );
    }
    wp_dequeue_style( 'customtheme-woocommerce-style' );
}
add_action( 'wp_enqueue_scripts', 'customtheme_scripts' );

查看源代码

域名只是一个例子。

【问题讨论】:

  • 对我来说 add_filter( 'woocommerce_enqueue_styles', '__return_empty_array' );在 5.7.1 版上完美运行。确保你清除所有缓存。
  • @MartinMirchev,是的,我试过了,但它不起作用。我有自己的自定义主题,我在 function.php 文件中添加了上面的代码。
  • 我已经在店面和自定义主题上进行了测试。两者都可以正常工作。
  • @MartinMirchev,刚刚更新了我在问题中的代码。请检查一次好吗?
  • 很高兴为您提供帮助!快乐编码! :)

标签: php css wordpress woocommerce hook-woocommerce


【解决方案1】:

这个答案已经在 woocommerce 5.x+ 上进行了全面测试,并且在默认的 woo 样式表上运行良好!如果您使用的是自定义主题和/或自定义样式表,那么您可能会遇到一些差异。

您在文档页面上看到的内容不再适用于 woo 4+according to their github page

所以你需要将其样式出列!

wp_dequeue_styleDocs

所以如果你只想删除woocommerce.css 文件,那么你可以这样做:

add_action('wp_enqueue_scripts', 'removing_woo_styles');

function removing_woo_styles()
{
  wp_dequeue_style('woocommerce-general'); // This is "woocommerce.css" file
}

但是,如果你想删除所有由 woo 加载的样式表,那么你可以使用这个:

add_action('wp_enqueue_scripts', 'removing_woo_styles');

function removing_woo_styles()
{
  wp_dequeue_style('wc-block-vendors-style');
  wp_dequeue_style('wc-block-style');
  wp_dequeue_style('woocommerce-general');
  wp_dequeue_style('woocommerce-layout');
  wp_dequeue_style('woocommerce-smallscreen');
}

如果您仍然可以看到样式,请尝试清理缓存。


与“自定义样式表”问题相关的更新

在我写答案时,您没有提供任何样式表的屏幕截图,也没有提及使用自定义样式表。这就是你无法让它工作的原因。

如果您使用的是自定义样式表,请不要复制/粘贴,例如问题中使用的自定义 css 文件。 wp_dequeue_style 函数将您的样式表句柄作为参数。所以请先阅读文档。您正在使用自定义句柄名称(即“customtheme-woocommerce-style”),因此,您需要使用该句柄名称。

add_action('wp_enqueue_scripts', 'removing_woo_styles');

function removing_woo_styles()
{
  wp_dequeue_style('customtheme-woocommerce-style'); // This is your "custom style sheet" file.
}

还请注意,注释掉主文件中的入队部分(即inc/woocommerce.php)可能会暂时起作用,但在下一次 woo 更新时,它会再次出现。因此,建议您尽量避免更新您的模板文件,除非您确实需要这样做!

【讨论】:

  • 我试过你的答案,但还是不行,清除缓存,更新浏览器,但当我检查视图源时仍然显示 woocommerce.css 文件。
  • 这是因为你的css“句柄”被称为“customtheme-woocommerce-style”。在我写答案的时候,你没有提供你的样式表的任何截图,你也没有说任何关于使用自定义它们的内容。这就是为什么你无法让它工作。我刚刚更新了我的答案,看看它并试一试!
  • 是的,你是对的,如果我更新 Woocommerce,那么它会再次出现,但在某处我读过帖子,我必须在我的主题中添加模板文件夹,我可以根据要求进行编辑该模板本身。我也这样做了。
  • 我知道,我不得不提到我正在使用自定义主题。我认为每个人都在做和我为 woocommerce 做的一样的事情。对于我这边的沟通不畅,我深表歉意。
  • 没问题。它发生了!是的,您可以“覆盖”模板部分,但从长远来看,这又会让您的生活更加艰难。每次更新时,您都必须检查模板与更新模板的兼容性。无论如何,尝试将您的 css 文件“句柄名称”传递给 wp_dequeue_style 函数,看看是否可以删除它。如果这行得通,那么您就不必再担心模板了!使用 wordpress 钩子比“覆盖”模板更大陆化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 2018-11-15
  • 2016-04-17
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多