WordPress-GeneratePress主题-缓存崩溃

2022-06-26 00:00:00 wordpress css wordpress-theming

我正在维护一个使用GeneratePress主题的WordPress站点。为了扩展,使用了一个子主题解决方案。这已经是一个非常成熟的儿童主题(这么说是为了避免戏剧性的解决方案)。

有一段时间我每次更新css时都遇到css缓存问题。style.css子样式表提供缓存版本,而不是修改后的版本。

我认为GeneratePress主题正在加载父样式.css+子样式.css(如果存在)。

generatepress/functions.php

// Enqueue our CSS.
wp_enqueue_style( 'generate-style-grid', get_template_directory_uri() . "/css/unsemantic-grid{$suffix}.css", false, GENERATE_VERSION, 'all' );
wp_enqueue_style( 'generate-style', get_template_directory_uri() . '/style.css', array( 'generate-style-grid' ), GENERATE_VERSION, 'all' );
wp_enqueue_style( 'generate-mobile-style', get_template_directory_uri() . "/css/mobile{$suffix}.css", array( 'generate-style' ), GENERATE_VERSION, 'all' );
wp_add_inline_style( 'generate-style', generate_base_css() );

// Add the child theme CSS if child theme is active.
if ( is_child_theme() )
    wp_enqueue_style( 'generate-child', get_stylesheet_uri(), true, filemtime( get_stylesheet_directory() . '/style.css' ), 'all' );

正在阅读这段代码...似乎如果检测子主题,它应该已经进行了缓存破坏,但是...对我来说,情况并非如此。我无法获得将文件时间结果作为版本参数的URL。

我的子主题函数.php没有将任何‘style le.css’入队。尽管如此,它还是被加载到父style.css之后。

尝试%1 我已经阅读了GeneratePresshttps://docs.generatepress.com/article/adding-css/中关于添加CSS的部分。

我看不到如何缓存bust子style.css文件。

尝试2 我解决此问题的第一次尝试是基于在触发wp_enQueue_脚本时将样式表入队。

function theme_css(){
    wp_enqueue_style( 'my-theme-style', get_stylesheet_directory_uri().'/style.css', 'generate-style', '1.1', 'all');
}
add_action( 'wp_enqueue_scripts', 'theme_css' );

我之所以提到Generate-Style,是因为在我看来,它是要依赖的父级默认样式(子Style.css将在父Style.css之后加载)。您可以在前面的代码片段中看到这一点。它对我不起作用。子主题将先加载父主题样式表,然后再加载父主题样式表。这很不幸,会破坏css。顺序应该相反(父样式.css优先,子样式.css之后)。如前所述,依赖生成样式无济于事。

尝试3 使用另一个文件名创建样式表。GeneratePress会发出警告,因为如果检测到CHILD_THEME,则它需要一个style le.css样式表文件。我可以有一个子主题,其中包含一个空的style.css和新的样式表。问题是,将为返回的用户提供style.css缓存。

我是WordPress的新手,所以我不知道还有没有其他机制可以解决这个问题。也许有更简单的解决方案可以奏效?


解决方案

如果您使用的是主题文档建议的here自动优化,那么您需要删除缓存,您的用户将看到更改。以下引用自该文档:

安装自动优化

减少每次加载页面时加载的CSS和JS文件的数量 将极大地提高您的页面速度。

AutOptimize的另一个好处是它将捆绑由 将定制器中的选项转换为外部文件,从而使您的 浏览器对其进行缓存。

要删除并重置自动优化缓存:登录wp-admin并转到插件/自动优化/设置以删除缓存,它将执行此操作并为您启动一个新的缓存。在wp-admin的顶部菜单栏中也有一个AutOptimize项;它对此也很方便。

相关文章