将版本号指定子主题的主样式表

时间:2014-05-21 作者:drake035

在标题中。php中,我喜欢为样式表指定一个版本号,以便浏览器被迫刷新它。但是,当处理子主题时,它的样式表并没有明确的调用,而是WordPress自动寻找它。那么,如何或在何处将版本号赋予子主题的样式表呢?

7 个回复
最合适的回答,由SO网友:Matt Royal 整理而成

您可以在子主题样式表本身中更新版本。。。

/*
 Theme Name:   Twenty Fourteen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Twenty Fourteen Child Theme
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyfourteen
 Version:      1.1.2 <---- Update here
*/

SO网友:Laxmana

我认为最好的方法是将子主题样式表(style.css)留空,只留下必要的注释(如主题名称、描述等,以便wordpress识别您的主题),然后在您的主题名称文件夹/css/main中创建另一个css文件。css

之后开启功能。php您可以在每次更改文件时获得新的“版本”:

function my_scripts_and_styles(){

$cache_buster = date("YmdHi", filemtime( get_stylesheet_directory() . \'/css/main.css\'));
wp_enqueue_style( \'main\', get_stylesheet_directory_uri() . \'/css/main.css\', array(), $cache_buster, \'all\' );

}

add_action( \'wp_enqueue_scripts\', \'my_scripts_and_styles\', 1);

The logic:

每次保存文件时,都会更改文件的修改时间。传递给日期的新时间函数将时间(filemtime返回一个表示时间的整数)转换为日期格式,使其成为所需格式的字符串。在我们的示例中,时间的格式精度为分钟。你可以将其更改为跟踪第二个ie"YmdHis".之后,文件的新修改时间将作为新版本传递给wp_enqueue_style.

Reference :

http://www.php.net/filemtime

http://php.net/manual/en/function.date.php

SO网友:kraftner

您需要做的是通过句柄取消注册主样式,然后使用版本号重新注册。在这种情况下,手柄是style-css.

通过查看呈现的样式表链接,可以确定需要使用的句柄:

<link rel=\'stylesheet\' id=\'style-css-css\'  href=\'http://site-url/wp-content/themes/child-theme/style.css?ver=4.6.1\' type=\'text/css\' media=\'all\' />
这里的id是style-css-css 也就是说我们的把手style-css

将其放入函数中。子主题的php:

function wpse_145141_change_style_version(){
    // First de-register the main stylesheet
    wp_deregister_style( \'style-css\' );
    // Then add it again, using your custom version number
    wp_register_style( \'style-css\', get_stylesheet_uri(), array(), "VERSION_NUMBER" );
    //finally enqueue it again
    wp_enqueue_style( \'style-css\');
}

add_action( \'wp_enqueue_scripts\', \'wpse_145141_change_style_version\');

SO网友:Jeff Travilla

当前的首要答案取决于主题,因为它要求主题开发人员将子主题版本号设置为变量,然后将其附加到子样式中。排队时使用css。我在一些主题上看到过这一点,但不是很多。以下内容适用于在函数中注册子样式的任何主题。php-不能使用旧的@import规则,我已经没有看到太多了。

在函数中。php的子主题,您应该有类似的内容:

// enqueue the child theme stylesheet

function wp_schools_enqueue_scripts() {
  wp_register_style( \'childstyle\', get_stylesheet_directory_uri() . \'/style.css\'  );
  wp_enqueue_style( \'childstyle\' );
}
add_action( \'wp_enqueue_scripts\', \'wp_schools_enqueue_scripts\', 11);
如果将其更改为以下内容,则每次保存文件时,它都会附加一个时间戳作为版本号,从而允许样式表的每次更改通过本地缓存中断:

 // enqueue the child theme stylesheet

 function wp_schools_enqueue_scripts() {
   wp_register_style( 
     \'childstyle\', 
     get_stylesheet_directory_uri() . \'/style.css\', 
     array(), 
     filemtime( get_stylesheet_directory() . \'/style.css\' ) 
   );
   wp_enqueue_style( \'childstyle\' );
 }
 add_action( \'wp_enqueue_scripts\', \'wp_schools_enqueue_scripts\', 11);
希望这对别人有帮助。我在我积极管理的每个网站上都使用它。

SO网友:Bjorn

而不是使用默认样式。我通常使用的csswp_enqueue_style 在子主题的函数中。php或其他包含的php文件。所以,你仍然有这种风格。子主题中包含所有子主题详细信息的css,但是您可以在子主题中有一个单独的css文件,用于实际的子主题样式(我通常将其放在子主题中的资产/css目录中)。这还允许您使用第4个参数设置CSS版本。例如:

function theme_name_child_scripts() {
    wp_enqueue_style( \'style-name\', get_stylesheet_directory_uri() . \'/assets/css/child-style.css\', array(), \'1.0.0\', \'screen\');
}

add_action( \'wp_enqueue_scripts\', \'theme_name_child_scripts\' );
如果操作未按正确的顺序加载,或使用上述wp\\u enqueue\\u样式的依赖项参数,则可以为该操作添加优先级:

add_action( \'wp_enqueue_scripts\', \'theme_name_child_scripts\', 20 );

SO网友:Fanky

使用filemtime 按文件更改版本。注销和enque样式。

查找源代码(ctrl+U)并查找不带“的子级css id”-css;。这里是voyager默认值

<link rel=\'stylesheet\' id=\'voyager-default-css\' href=\'/wp-content/themes/voyager-child-theme/style.css?1606484598\' type=\'text/css\' media=\'all\' />

<使用此代码(source) 但替换\'style\' 按找到的字符串(此处\'voyager-default\')

Child theme\'s functions.php

function add_timestamp_to_childtheme_stylesheet() {
    wp_dequeue_style( \'style\' );
    wp_deregister_style( \'style\' );
    wp_enqueue_style(\'style\', get_stylesheet_uri().\'?\'.filemtime(get_stylesheet_directory().\'/style.css\'), array(), null);
}
add_action( \'wp_print_styles\', \'add_timestamp_to_childtheme_stylesheet\' );

SO网友:selfagency

我相信,如果您使用Wordpress主题编辑器编辑子主题的样式表,那么每次保存文件时,它都会自动附加一个新的版本号。

结束

相关推荐

加载AJAX后,WP视频媒体播放器无法加载正确的CSS

我有一篇使用WP的帖子[video] 显示我的视频文件的快捷码。应该是这样的:但看起来是这样的:在我单击“加载更多帖子”之后,AJAX调用。在我点击帖子后,视频播放器将看起来像我想要的样子。只有当文章加载了AJAX时,才会出现这样的情况。谁能告诉我怎么了?谢谢