如何在wordpress中添加style.css版本


12

style.css我可以在Joomla中像下面这样在WordPress中添加版本。

<link rel="stylesheet" href="/templates/example/css/style.css?v=1.2">

我知道style.css会动态加载。请帮助我该怎么做。


这是一个插件wordpress.org/plugins/wp-css-version-history,它将在样式表中自动附加一个版本号。它创建一个最后加载的新样式表。无需清除缓存即可查看更改。使用内置于CSS编辑器中的Wordpress和用户文件锁定功能进行团队协作。
布莱恩·霍尔茨伯格

Answers:


16

版本号是的参数wp_enqueue_style()

根据食典,这里是所有wp_enqueue_style接受的参数。

wp_enqueue_style( $handle, $src, $deps, $ver, $media );

例如,要加载具有版本号的样式表,您可以执行以下操作:

function wpa_90820() {
    wp_enqueue_style('my-styles', get_stylesheet_directory_uri() .'/my-styles.css', array(), '1.0' );       
}

add_action('wp_enqueue_scripts', 'wpa_90820');

当我这样做时,旧的style.css也正在加载。如何删除?
2013年

@VinodDalvi你的句柄是什么意思。我对此一无所知,对wordpress来说还很陌生,请问我。
托雷托2013年

1
@Toretto您的主题是在header.php中对其进行硬编码,还是您的主题也使用不同的句柄(第一个参数)将其包围。解决方案还取决于您是直接编辑主题的functions.php还是创建子主题。
helgatheviking

@ Toretto,$ handle显示在我的回复中,并且在我提供给Codex页面的链接中也有描述,wp_enqueue_style请您完成作业。
helgatheviking

1
@Toretto如果您的主题wp_enqueue_style()用于加载有问题的样式表,则其句柄是第一个参数。如果您的主题是对header.php中的样式表进行硬编码,则它将没有句柄。
helgatheviking 2013年

5

在某些情况下,您可能会发现更好地动态版本化样式表,而不是强制使用版本,因此,只要更改样式表,它便会立即自动更改并刷新浏览器缓存,而不必一遍又一遍地编辑您的functions.php。

您可以使用filemtime()来做到这一点。这是在引用parent_style的子样式中执行的操作

    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ), filemtime( get_stylesheet_directory() . '/style.css' )  );

随着时间的推移,我开始偏爱主题版本,但是如果没有一致的主题版本控制做法,那么在这里使用filemtime()是一个好主意。
jgangso

3

如果您是主题开发人员,则在推送新版本时可能希望强制重新加载资产。

因此,主题的版本控制在 style.css

/*
    Theme Name: Your Theme Name
    Version: 1.0.2
*/

在您的顶部functions.php

$theme = wp_get_theme();
define('THEME_VERSION', $theme->Version); //gets version written in your style.css

稍后将CSS或JS放入队列时,请使用THEME_VERSION第四个参数:

function theme_styles()
{
    wp_enqueue_style('main', get_template_directory_uri().'/css/main.css', [], THEME_VERSION, 'all');
}
add_action('wp_enqueue_scripts', 'theme_styles'); 

将输出到页面:

.../your-theme-name/css/main.css?ver=1.0.2 

当您有更多资产需要处理并且不想手动更改时,它会很方便。


2

您可以使用以下方式之一实现此目的:

1)在主题的header.php文件中添加以下标记。

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>'?v=1.2" type="text/css" media="all" />

2)在主题的functions.php文件中添加以下代码。

function theme_styles()  
{ 
  // Register the style like this for a theme:  
  // (First the unique name for the style (custom-style) then the src, 
  // then dependencies and ver no. and media type)
  wp_enqueue_style( 'style-css', get_template_directory_uri() . '/style.css', array(), '1.2', 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

有关更多信息,请参见此页面。


当我这样做时,旧的style.css也正在加载。如何删除?
2013年

旧的style.css的句柄是什么?
Vinod Dalvi

如果您找不到手柄,则只需在此处复制并粘贴整个style.css网址即可。–我将从那里得到它……
Vinod Dalvi 2013年

还是可以告诉我您的主题名称或主题的文件夹名称是什么?
Vinod Dalvi

1
Welcome .... :)
Vinod Dalvi

1

将css加载到wordpress主题中的最佳方法是functions.php文件中的以下代码:

function theme_styles()  
{ 
  global $ver_num; // define global variable for the version number
  $ver_num = mt_rand() // on each call/load of the style the $ver_num will get different value
  wp_enqueue_style( 'style-css', get_template_directory_uri() . '/style.css', array(), $ver_num, 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

这是在主题中加载样式的正确方法,也是登台/测试目的的最佳方法,因为每次刷新都会提供样式的更新版本。

如果要避免第一种方式加载,可以使用此简短版本,并将以下行放入header.php文件中,将得到相同的结果:

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); echo '?ver=' . filemtime( get_stylesheet_directory() . '/style.css'); ?>" type="text/css" media="screen, projection" />

干杯


1

尝试这个:

将此添加到functions.php

function autoVer($filename){
    $url = get_template_directory_uri() . $filename;
    $file = get_template_directory() . $filename;
    if ( file_exists($file)) {
        return $url . '?v=' .md5(date("FLdHis", filectime($file)) . filesize($file));
    }
    clearstatcache();
}

将其添加到页眉或页脚-> autoVer('/ js / main.js');


1

与目前介绍的方法相反,我认为最好使用出现在style.css文件顶部的版本号:

// style.css
/**
Theme Name: My theme
...
Version: 1.2.3
...
**/

要在CSS中使用主题的版本,请将以下内容添加到functions.php(或等效文件)脚本中:

<?php

wp_enqueue_style(
    'my-theme',
    get_stylesheet_directory_uri() . '/style.css',
    [],
    wp_get_theme()->get('Version')
);

这意味着,在编辑style.css文件之后,您要做的就是更改同一文件顶部的版本号,以查看前端的更改。

如果检查主题HTML的头部,将看到以下内容:

<link rel='stylesheet'
    id='my-theme-css'
    href='... style.css?ver=1.2.3'
    type='text/css'
    media='all'
/>

-1

这是通过两次调用函数 来获取版本号的直接方法bloginfo($show)。首先是样式表,其次是版本号。

<link rel="stylesheet" id="style-css" href="<?php bloginfo('stylesheet_url'); ?>?ver=<?php bloginfo('version'); ?>" type="text/css" media="all" />

这里的所有都是它的。希望有帮助或有用。您可以浏览所有可用参数,并查看可以使用该bloginfo()函数输出的内容。

由于@Ravs指出了有关bloginfo()函数的'versions'参数的错误,请忽略我的评论。它确实会打印Wordpress版本号。


我认为这是不正确的答案,因为<?php bloginfo('version')?>为您提供了当前的wordpress版本,而问题是关于附加style.css版本而不是wordpress版本。
Ravinder Kumar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.