【问题标题】:Wordpress enqueue CSS in child theme with version带有版本的子主题中的 Wordpress 排队 CSS
【发布时间】:2017-11-08 11:14:24
【问题描述】:

本质上,我正在尝试将?ver=1.0 标记添加到我的样式表的末尾,该样式表已包含在我的子主题的函数文件(已入队)中。我有read the documentation in the codex,但它似乎没有在源代码中应用,并且在我应用更新时它没有按预期更新/缓存中断。

样式表本身正在被包括在内,但是,版本不适用,所以我在这里有点松散。

这是我当前的代码:

add_action( 'wp_enqueue_scripts', 'kl_child_scripts',11 );
function kl_child_scripts() { 
    wp_deregister_style( 'kallyas-styles' );
    wp_enqueue_style( 'kallyas-styles', get_template_directory_uri().'/style.css', '' , ZN_FW_VERSION );
    wp_enqueue_style( 'kallyas-child', get_stylesheet_uri(), array('kallyas-styles') , filemtime(get_stylesheet_directory() . '/style.css'));

注意这是我尝试应用该版本的最后一行。 (卡利亚斯-孩子)。上一行 (kallyas-styles) 似乎确实有某种形式的版本 ZN_FW_VERSION,但这不会产生预期的效果。

filemtime(get_stylesheet_directory() . '/style.css') 旨在在每次保存文件时打破缓存并更新版本号。编辑:我现在相信这段代码确实有效,但主题(因为它是预构建的)阻止它正确应用。如果我解决了这个问题,我会更新,希望能与主题开发人员交谈。

【问题讨论】:

    标签: wordpress wordpress-theming themes stylesheet


    【解决方案1】:

    问题是你使用的是filemtime,它返回一个int,你应该有一个string。正如您在documentation 中看到的那样:

    $ver

    (string|bool|null) (可选)字符串指定样式表 版本号(如果有的话)作为查询添加到 URL 用于缓存清除目的的字符串。如果版本设置为 false,则 版本号自动添加等于当前安装 WordPress 版本。如果设置为 null,则不添加任何版本。默认值: 假的

    所以你可以试试这个:

    add_action( 'wp_enqueue_scripts', 'kl_child_scripts',11 );
    function kl_child_scripts() { 
        wp_deregister_style( 'kallyas-styles' );
        wp_enqueue_style( 'kallyas-styles', get_template_directory_uri().'/style.css', '' , ZN_FW_VERSION );
        wp_enqueue_style( 'kallyas-child', get_stylesheet_uri(), array('kallyas-styles') , strval(filemtime(get_stylesheet_directory() . '/style.css')));
    

    我添加了 strval,它将 int 转换为字符串

    【讨论】:

    • 这似乎返回正确,即如果我 echo strval(filemtime(get_stylesheet_directory() . '/style.css')); 它返回 1510140577 (并按预期更新新保存)。但是,它不适用于在源代码中调用 style.css 文件时......不确定那里发生了什么!
    • @math 让我们先尝试放置一些静态的东西.. 例如在版本中输入值“14”,看看它是否有效
    • 啊...好电话。这也是无所作为。 wp_enqueue_style( 'kallyas-child', get_stylesheet_uri(), array('kallyas-styles') , '4.0.0'); ...一定是主题设置有问题,还是子主题有问题?
    • @Matt 你看到其他 CSS 苍蝇的版本了吗?因为也许这个功能被停用了
    • 它似乎是,是的。我可以从同一个函数中将文件出列...:/
    【解决方案2】:

    使用下面的代码

            define('ZN_FW_VERSION','1.0');
            add_action( 'wp_enqueue_scripts', 'kl_child_scripts',11 );
            function kl_child_scripts() { 
                wp_deregister_style( 'kallyas-styles' );
                wp_dequeue_style( 'kallyas-styles' );
                wp_enqueue_style( 'kallyas-styles', get_template_directory_uri().'/style.css', array() , ZN_FW_VERSION );
                wp_enqueue_style( 'kallyas-child', get_stylesheet_uri(), array('kallyas-styles') , ZN_FW_VERSION);
            }
    

    【讨论】:

      【解决方案3】:

      在functions.php中我添加了

       wp_enqueue_style( 'kallyas-child',
              get_stylesheet_directory_uri() . '/style.css',
              array( 'kallyas-styles' ),
              filemtime(__DIR__.'/style.css')
          );
      

      在 tmp.demos.rent-a-ninja.org 测试过

      使用 divi 主题

      【讨论】:

      • 我之前看到过这种方式,但是每次编辑 CSS 文件时我都必须手动更新版本号,对吧?我的目标是尽可能以编程方式完成。
      • 由于您的方法不起作用,我在问您的 filemtime 是否返回 propper 值?你也可以试试文件的md5?!
      • 它似乎可以正确返回,即如果我echo filemtime(get_stylesheet_directory() . '/style.css') 它可以返回1510140577。但是,它不适用于源代码中的 style.css 标记。
      • 为什么要注销原来的父主题?
      • 如果您希望他收到有关您的消息的通知,则需要使用@Matt 添加该人的姓名,除非他可能看不到它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多