it-swarm-ko.tech

기본 CSS 파일을 어떻게 버전화할 수 있습니까?

스타일 시트 1.css와 같은 주요 스타일 시트에 'styles.css'가 아닌 다른 파일 이름을 사용하도록 WordPress에 지시하려면 어떻게해야합니까? 버전 및 캐싱 목적으로이 작업을 수행하고 싶습니다.

7
Bobby Jack

Style.css는 WordPress 테마에 필요합니다. 그것이 WordPress에서 Appearance >> Themes 메뉴의 테마 이름과 메타 정보를 가져 오는 곳입니다. 즉, 실제로 style.css를 사용하지 않아도됩니다. 나는 그것을 사용하지 않는 몇 가지 쉽게 사용할 수있는 테마를 알고, 나는 단지 내 사용자 정의 디자인의 소수에 그것을 사용합니다.

header.php에서 일반 스타일 시트 링크 대신 다음 태그를 삽입하십시오.

<link rel="stylesheet" type="text/css" href="<?php bloginfo('stylesheet_directory'); ?>/style-1.css" />

이렇게하면 대체 스타일 시트가 페이지의 스타일 시트로로드되고 일반 style.css는 완전히 무시됩니다.

3
EAMann

이것은 부적절 할 수 있습니다. 내가 놓친다면 알려주세요.

wp_enqueue_style()의 네 번째 인수는 스타일 시트의 버전 번호입니다. 귀하의 테마에서 functions.php :

function my_theme_styles() {
    // replace "10" with your version number; increment as you Push changes
    wp_enqueue_style('my-theme-style', get_bloginfo('template_directory') . '/style.css', false, 10);
}
add_action('wp_print_styles', 'my_theme_styles');

header.phpwp_head()을 수행해야합니다. 물론 어쨌든하고 있습니다.)

이렇게하면 CSS 파일로 긴 만료 헤더를 푸시하고 버전 번호를 업데이트하여 클라이언트가 새 파일을 다운로드하도록 할 수 있습니다. WP는 CSS 파일의 URL에 "? ver = N"을 추가합니다.

13
Annika Backstrom

테마의 functions.php 파일에 이것을 버리십시오 :

function my_cool_style_versioner( $style ){
  return str_replace( '/style.css', '/style-1.css', $style );
}

add_filter( 'stylesheet_uri', 'my_cool_style_versioner' );
3
John P Bloch

참고 파일 버전 관리를 위해 쿼리 문자열을 사용해서는 안 됨 (프록시는 캐시하지 않습니다).

더 좋은 방법은 다음과 같은 숫자를 추가하여 파일 이름을 버전 화하는 것입니다.

  • style. 123 .css
  • style. 124 .css

그래서 내 접근 방식은 다음과 같습니다.

아파치 htaccess 리디렉션

아파치와 함께 HTML5 상용구 를 사용하고 있다면.htaccess 파일에 다음 섹션을 찾을 수 있습니다 :

# ------------------------------------------------------------------------------
# | Filename-based cache busting                                               |
# ------------------------------------------------------------------------------

# If you're not using a build process to manage your filename version revving,
# you might want to consider enabling the following directives to route all
# requests such as `/css/style.12345.css` to `/css/style.css`.

# To understand why this is important and a better idea than `*.css?v231`, read:
# http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpe?g|gif)$ $1.$3 [L]
</IfModule>

(일반적으로 줄의 주석 처리를 해제하여 활성화해야합니다.)

테마 functions.php

스타일 시트에 테마의 버전을 자동으로 사용하고 싶었 기 때문에 다음과 같이 작성했습니다.

테마에 다음을 추가 할 수 있습니다 functions.php :

function my_theme_styles() {
    $my_theme = wp_get_theme();
    $version = str_replace('.','',$my_theme->get( 'Version' ));
    $stylesheet = get_bloginfo('stylesheet_directory').'/style.'.$version.'.css';
    wp_enqueue_style('my-main', $stylesheet, false, null);
}
add_action('wp_print_styles', 'my_theme_styles');

null 대신 버전으로 false을 제공 했으므로 Wordpress는 해당 버전을 쿼리 문자열에 추가하지 않습니다.

결과

이렇게하면 테마의 버전 1.0.2에 대해 다음과 같은 스타일 시트가 출력됩니다.

<link rel='stylesheet' id='maw-main-css'  href='http://www.example.com/wp-content/themes/my-theme/style.102.css' type='text/css' media='all' />

내 style.css에서 버전 2.0.0으로 테마를 변경하면 다음과 같이 출력됩니다.

<link rel='stylesheet' id='maw-main-css'  href='http://www.example.com/wp-content/themes/my-theme/style.200.css' type='text/css' media='all' />

추가 메모

주의를 기울여 주시면 1.2323과 1.22.3 같은 테마 버전에 문제가 생길 수 있습니다. 두 버전 모두 1223의 점없는 버전이됩니다.

더 좋은 방법은 .htaccess 파일에서이를 고려하는 것입니다. 예를 들어, 숫자 사이에 밑줄을 사용하여 도트를 바꿀 수 있습니다.

이것은 테스트되지 않았지만 작동해야합니다.

.htaccess

# ------------------------------------------------------------------------------
# | Filename-based cache busting                                               |
# ------------------------------------------------------------------------------
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.+)\.([_\d]+)\.(js|css|png|jpe?g|gif)$ $1.$3 [L]
</IfModule>

functions.php

function my_theme_styles() {
    $my_theme = wp_get_theme();
    $version = str_replace('.','_',$my_theme->get( 'Version' ));
    $stylesheet = get_bloginfo('stylesheet_directory').'/style.'.$version.'.css';
    wp_enqueue_style('my-main', $stylesheet, false, null);
}
add_action('wp_print_styles', 'my_theme_styles');
3

EAMann은 정확합니다. 모든 CSS에 style.css 파일을 사용할 필요는 없습니다.

테마의 스타일 시트 및 다른 파일의 버전을 지정하려면이 파일을 functions.php 파일에 추가 할 수 있습니다

function fileVersion($filename)
{
    // get the absolute path to the file
    $pathToFile = TEMPLATEPATH.'/'.$filename;
    //check if the file exists
    if (file_exists($pathToFile)) 
    {
        // return the time the file was last modified
        echo filemtime($pathToFile);
    }
    else
    {
        // let them know the file wasn't found
        echo 'FileNotFound';
    }
}

그리고 나서 스타일 시트에 대한 링크를 만들 때 이것을 할 수 있습니다.

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

이 방법으로 수동으로 버전 번호를 업데이트 할 필요가 없습니다. 서버에서 파일이 업데이트 될 때마다 버전이 자동으로 해당 UNIX 타임 스탬프로 변경됩니다

3
Paul Sheldrake

음, 원하는 버전을 호출하는 곳으로 style.css를 사용하면됩니다. 간단히 말하면

@import url("style-1.css");

그런 다음 버전을 업그레이드 할 때 다음과 같이 편집하십시오.

@import url("style-2.css");

버전을 저장하는 것과 관련하여 Subversion , 또는 git ?를 사용 해본 적이 있습니까? 그런 다음 스타일 시트의 전체 트랙 레코드를 가질 수 있습니다. 버전 관리의 전체 이유를 완전히 이해하지 못하고있을 수도 있습니다.

2
artlung

나는이 오래된 질문을 발견하고 모든 답변이 요즘 시대에 뒤 떨어진 것처럼 보였다.

Style.css 파일 헤더 부분에 정의 된 테마 버전을 사용하기 만하면됩니다. wp_get_theme()->get( 'Version' )을 사용하여 얻을 수 있습니다.

function my_enqueue_styles() {
    wp_enqueue_style( 'my-theme-style', get_template_directory_uri() . '/style.css', false, wp_get_theme()->get( 'Version' ) );
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_styles' );

이처럼 버전 번호는 ?ver=#.##와 같은 url에 자동으로 추가되며 style.css에서 테마 버전이 증가하는 즉시 url이 변경됩니다.

2
JHoffmann

functions.php 변경

wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri();

wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri(), array(), $ver );

$ver를 어떤 값으로 변경하거나 time()을 개발 모드로 변경하십시오.

1
Rashed Hasan

이것이 전적으로 확실하지는 않지만, WP3에서 변경되었는지 확실하지 않지만 한 가지 방법은 관련 PHP 파일을 직접 편집하는 것입니다 (대시 보드/관리자 페이지에서 직접 수행 할 수 있는지 여부는 알 수 없음) :

wp-folder/wp-content/themes/your-theme/

header.php를 엽니 다. 이 파일에서 다음 행을 찾으십시오.

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

링크 된 스타일 시트에 'version'을 추가하려면 (stylesheetURL.css?version=2와 같아야한다고 가정) 다음과 같이 변경하십시오 :

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>?version=2" type="text/css" media="screen" />

이것은 조금 비관적입니다. 그렇다면 더 좋은 방법이 있다면 직접 듣고 싶을 것입니다. =)


다른 스타일 시트 styles-1.css를 사용하려면 (위의) 행을 다음과 같이 할 수 있습니다.

<link rel="stylesheet" href="absolute/or/root-relative/path/to/styles-1.css" type="text/css" media="screen" />

(기본적으로 <?php ... ?>를 제거하고 일반 경로로 바꾸십시오.)

0
David Thomas