ワードプレスでstyle.cssのバージョンを追加する方法


12

style.cssJoomlaでできる以下のようなWordPressのバージョンを追加する方法。

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

style.cssが動的に読み込まれることを知っています。その方法を教えてください。


以下は、スタイルシートに自動的にバージョン番号を追加するプラグインwordpress.org/plugins/wp-css-version-historyです。最後に読み込まれる新しいスタイルシートを作成します。変更を確認するためにキャッシュをクリアする必要はありません。チームコラボレーションには、Wordpressに組み込まれたCSSエディターとユーザーファイルロックを使用します。
ブライアンホルツバーガー、

回答:


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もロードしています。それを削除するには?
Toretto

@VinodDalviハンドルとはどういう意味ですか。私はそれについて知りません、私はwordpressに新しいです。
Toretto

1
@Torettoテーマがheader.phpでハードコーディングされているか、テーマが別のハンドル(最初のパラメーター)でエンキューしている。解決策は、テーマのfunctions.phpを直接編集しているか、子テーマを作成しているかにも依存します。
helgatheviking 2013年

@ Toretto、$ handleが私の返答に表示され、wp_enqueue_style宿題を行うためにCodexページに提供したリンクにも記載されています。
helgatheviking 2013年

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 2018年

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、4番目の引数として使用します。

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もロードしています。それを削除するには?
Toretto

古いstyle.cssのハンドルは何ですか?
Vinod Dalvi 2013年

ハンドルが見つからない場合は、style.cssのURL全体をここにコピーして貼り付けてください。そこから取得します...
Vinod Dalvi

または、テーマ名またはテーマのフォルダー名を教えてください。
Vinod Dalvi 2013年

1
ようこそ.... :)
Vinod Dalvi 2013年

1

cssをワードプレスのテーマに読み込む最良の方法は、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) 2回呼び出すことでバージョン番号を取得するかなりまっすぐな方法です。1つ目はスタイルシート、2つ目はバージョン番号です。

<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')?>は現在のワードプレスのバージョンを提供するので、それは正しい答えではないと思います。
Ravinder Kumar 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.