Answers:
您可以在子主题样式表本身中更新版本。
/*
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
*/
我认为最好的方法是将子主题样式表(style.css)留空,仅包含必要的注释(例如主题名称,描述等,以便wordpress可以识别您的主题),然后在您的文件中创建另一个CSS文件-主题名称文件夹/css/main.css
之后,在function.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);
逻辑:
每次保存文件时,文件的修改时间都会更改。新的时间将传递给date函数,以将时间(filemtime返回代表时间的整数)转换为日期格式,以使其成为所需格式的字符串。在我们的示例中,时间的格式化精度为分钟。您可以将其更改为跟踪第二个"YmdHis"
时间,即。之后,文件的新修改时间将作为新版本传递给wp_enqueue_style
。
参考:
$cache_buster = wp_get_theme()->get('Version')
您将在中的注释块中指定版本style.css
。请参阅codex.wordpress.org/Function_Reference/wp_get_theme以获取参考。
wp_get_theme()->get('Version')
可以那样工作)。
您需要做的是通过句柄注销主要样式,然后用您的版本号重新注册。在这种情况下,手柄为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
将其放在您的儿童主题的function.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');
当前的最高答案取决于主题,因为它要求主题开发人员将子主题版本号放入变量中,然后在排队时将其附加到子style.css中。我在某些主题上看到了这一点,但不是很多。以下内容适用于在functions.php中注册了子样式的任何主题-无法与旧的@import规则一起使用,而我再也没有看到过。
在子主题的functions.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);
希望这对某人有帮助。我在我积极管理的每个站点上都使用它。
我通常不使用默认的style.css,而是在子主题的functions.php或其他包含的php文件中使用wp_enqueue_style。因此,您仍然在子主题中保留了style.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_enqueue_style中的依赖项参数进行操作:
add_action( 'wp_enqueue_scripts', 'theme_name_child_scripts', 20 );