【问题标题】:can't change version using wp_enqueue_style or anything无法使用 wp_enqueue_style 或任何东西更改版本
【发布时间】:2018-03-18 21:25:18
【问题描述】:

我已经使用

将样式表排入队列
wp_enqueue_style( 'home-custom-style', get_stylesheet_directory_uri() . 
'/css/style.css');

在我的孩子主题中 然后当我尝试修改它时,我意识到 wordpress 给了它一个自动版本,现在我无法更改。

我已经尝试修改入队代码添加版本,

wp_enqueue_style( 'home-custom-style', get_stylesheet_directory_uri() . 
'/css/style.css' , array(), '30140222');

还尝试将其出队并再次入队,然后删除文件并将其读取到文件夹中,但没有任何效果。 除了null

现在我在浏览器中按 Ctrl + F5 进行了硬刷新(绕过我的缓存),因为我在本地主机上,但仍然需要答案才能在服务器上使用它.

【问题讨论】:

  • 在入队之前,您是否检查过它是否入队两次(或以相同的名称注册)?出于调试目的,您可以扩展 WP_Styles 并使用自定义 add() 方法来准确查看添加该样式的时间和位置。
  • 不幸的是,这不仅仅是一个样式表,而是我添加的所有样式表,所以问题不在于名称。
  • 您是否有任何可能覆盖 WP_Styles 并删除查询参数的优化/缓存插件?你有没有试过一个一个地禁用插件,看看是否有效?
  • 当我禁用“Child Theme Configurator”插件时,它终于起作用了。谢谢。
  • 可能有另一个函数可以去除版本号。看这里stackoverflow.com/questions/36805009/…

标签: css wordpress caching


【解决方案1】:

只需在function.php中添加此功能

function wpa() {
    wp_enqueue_style( 'home-custom-style', get_stylesheet_directory_uri() . '/css/style.css' , array(), '30140222' );
}
add_action('wp_enqueue_scripts', 'wpa');

【讨论】:

    【解决方案2】:

    请注意以下内容也适用于脚本,只需将 style 替换为 script 就可以了

    问题是您正在尝试修改已注册的样式。看,当您调用 wp_enqueue_style() 时,样式会同时注册和入队(我建议先调用 wp_register_style() 然后再调用 wp_enqueue_style())。

    但是,如果样式已经注册,当您尝试将其加入队列时,不会使用额外的参数,它们会被忽略。

    您需要做的是以下(确保在下面的wp_register_style()中填写正确的参数):

    wp_deregister_style( 'my-style' );
    wp_register_style( 'my-style', ... );
    wp_enqueue_style( 'my-style' );
    

    这首先取消注册您要修改的静止图像,然后使用修改后的参数再次注册它。这将适用于用作依赖项或具有自己的依赖项的样式,因为在页面上加载样式时解决依赖项,而不是在注册/入队时解决。

    对于您想要实现的目标,我个人会在父主题执行之前注册我想要在子主题中覆盖的任何脚本和样式。这样您就不必注销和注册它们。这是一个示例(其中一部分是示例父主题的代码):

    function parent_theme_enqueue_scripts(){
        wp_enqueue_style( 'example-style', get_bloginfo( 'template_directory' ) . '/css/example.css', array(), 'v1.0.0' );
    }
    add_action( 'wp_enqueue_scripts', 'parent_theme_enqueue_scripts', 10 );
    
    function child_theme_enqueue_scripts(){
        wp_register_style( 'example-style', get_bloginfo( 'stylesheet_directory' ) . '/css/example.css', array(),'v1.2.0' );
    }
    add_action( 'wp_enqueue_scripts', 'child_theme_enqueue_scripts', 5 );
    

    这里要注意的重要一点是child_theme_enqueue_scripts 的优先级 - 它低于parent_theme_enqueue_scripts 的优先级。另请注意,我们不是直接将样式排入队列,而是只是注册它。这是为了不弄乱样式的加载顺序(以防父主题将多个样式排入队列但不使用依赖项来做到这一点)。

    【讨论】:

    • 尝试注销然后重新注册,但没有成功,还尝试在所有父样式之前注册它们,就像第二种方法一样,但它也没有工作。而且我真的不认为它的名字已经被父主题使用或注册过。
    【解决方案3】:

    您应该尝试在您的 themesplugins 文件夹中搜索修改入队样式和脚本的函数。

    我一直在寻找包含 style_loader_srcver= 的行,并发现了一个名为“Child Theme Configuratior”的插件,这是罪魁祸首。

    关闭该插件,一切都开始按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      相关资源
      最近更新 更多