WordPressにCSSを登録するwp_register_style()の解説

WordPressにCSSを登録したい時に使用する関数です。

似た関数にwp_enqueue_style()があり、何が違うのか?どこで使うのか?を分かりやすくまとめました。

単純にCSSだけを出力したいならwp_enqueue_style()を使えば良いのですが、理解せずに使うのと、理解して適材適所に使うのとでは今後の保守性やカスタマイズのやり易さに違いが出てきますので、勉強熱心な方はこちらも覚えておくと良いでしょう。

まとめ記事紹介

cssだけでなくjavascriptも追加したい。追加だけでなく削除もしたい。保守性、メンテナンスを考えて適切な処理を行いたい。とお考えの方は、こちらのまとめ記事も併せてご覧ください。

目次

wp_register_style()

wp_register_style() 初期値

wp_register_style(
    string           $handle,
    string|false     $src,
    string[]         $deps = array(),
    string|bool|null $ver = false,
    string           $media = 'all'
): bool

wp_register_style() の簡潔コード

wp_register_style($handle, $src, $deps, $ver, $media);
$handle string 必須

スタイルシートの名前。判別するのに使うため一意である必要があります。

$src string|false 必須

スタイルシートへの絶対URL。

$srcfalseに設定されている場合、依存する他のスタイルシートのエイリアスになります。

$deps string[]

依存するスタイルシートのハンドル名を指定(既に登録されている$handleを指定)

指定したスタイルシートの後に、このスタイルシートが読み込まれる。

Font Awesomeの後に読み込んだり、CSSの上書きをしたい時に利用します。

デフォルト:array()

$ver string|bool|null

スタイルシートのバージョン番号を指定する文字列 (存在する場合)

キャッシュ無効化の目的でクエリ文字列として URL に追加されます。

$verfalseに設定されている場合、現在インストールされているWordPressのバージョンと同じバージョン番号が自動的に追加されます。

nullに設定すると何も追加されません。

デフォルト:false

$media string

スタイルシートに定義されているメディアを指定する文字列を指定。

例)printscreen ・(orientation: portrait)(max-width: 640px)

デフォルト:all

返り値 bool

スタイルシートが登録されているか判定。
成功した場合は true失敗した場合は false

wp_enqueue_style()との違い

簡単に説明すると

wp_register_style()

事前予約。使いたいスタイルシートをコアに登録する関数で、これだけではキューに登録されません。

wp_enqueue_style()

wp_register_style()で登録したスタイルシートをキューに追加する関数です。登録されていないハンドル名を指定した場合は新規にキューへと追加します。

これだけではwp_register_style()って使う必要あるの?全てwp_enqueue_style()で直接使いたい所でキューにCSSを新規追加していけば良いじゃん。と思われるかもしれません。

functions.phpでちょっとしたCSSを追加したりするだけならばwp_enqueue_style()で事足りますが、依存関係が深くなりがちなプラグインやテーマを開発したり、保守性を高めたり、コードの可読性を上げたいと考えた場合はwp_register_style()を使った方が良いのです。

キューって何?

WordPressではフロントエンドに出力する前に、バックエンドで一度出力するスタイルシート群を溜める保管場所をqueue(キュー)と呼び、キューに登録する作業をenqueue(エンキュー)と呼びます。エンキューの工程が終了後、適切な順序に並び替えてフロントエンドにスタイルシートが出力されます。

依存関係の簡略化

あるスタイルシートを読み込む前に必ず読み込んでおかなければならないスタイルシートをwp_register_style()$depsに登録しておけばwp_enqueue_style()でキューに追加する際、自動的に必要なスタイルシートも全て追加されます。

これにより、スタイルシートに必要な依存関係が適切に処理されているか等の確認作業がなくなり、保守性の高いコードを書くことが出来ます。

Font Awesome後にスタイルシートをコア登録する例

add_action('wp_enqueue_scripts', function () {
    // Font Awesomeを登録
    wp_register_style(
        'font-awesome',
        'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css',
        [],
        '6.4'
    );

    // 登録したいスタイルシート依存関係にfont-awesomeを指定
    wp_register_style(
        'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        ['font-awesome'],
        null
    );
});

get_stylesheet_directory_uri()は現在有効化しているテーマのディレクトリURLを取得する関数です。子テーマのパスを取得したい場合はこの関数を必ず使います。

上記のコードだけではコアに登録されるだけで、キューに登録はされていないためフロントエンド側のどこにも出力されません。

登録したスタイルシートを出力したい場合は、以下のコードを記載すると依存関係を保持したまま出力されます。

使いたい場所でハンドル名を呼び出すだけでOK

add_action('wp_enqueue_scripts', function () {
    wp_enqueue_style('child-style');
});

上記のコードを記載するとHTMLのソースには以下のタグが挿入されます。

Font Awesomeが挿入された箇所の後にstyle.cssが読み込まれています。

<link rel='stylesheet' id='font-awesome-css' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css?ver=6.4' type='text/css' media='all' />
<link rel='stylesheet' id='child-style-css' href='https://it-manabi.com/wp-content/themes/swell_child/style.css' type='text/css' media='all' />
必須スタイルシートにはwp_enqueue_styleを使わない理由

wp_enqueue_style()でも依存関係を指定出来る引数が用意されています。

しかし依存関係にて指定される必須スタイルシートはwp_register_style()をなるべく使いましょう。という説明を誰もがしています。

なぜwp_enqueue_style()で必須スタイルシートの登録は推奨されないのか?その理由はスタイルシート

の依存関係を適切に処理するためです。

必須スタイルシートに関してはwp_register_style()を使って事前に全てコア登録をしておけば、依存関係が正しく認識され、正しい順序でスタイルシートが読み込まれwp_enqueue_style()を使用した際に、良きせぬエラーに遭遇する確率も減るためwp_register_style()が推奨されているのです。

スタイルシートの一元管理と処理の分離

wp_register_style()を使う最大のメリットはこれでしょう。

スタイルシートの記述を全て一箇所にまとめ、使いたい所でwp_enqueue_style()にて呼び出す。

もしスタイルシートのファイル名やURLが変わったとしても、wp_register_style()$srcを変更するだけで済む保守性の高さが魅力的です。

悪い例
add_action('wp_enqueue_scripts', function () {
    wp_enqueue_style(
        'child-style',
        get_stylesheet_directory_uri() . '/style.css',
    );
});
add_action('wp_enqueue_scripts', function () {
    wp_enqueue_style(
        'child-style',
        get_stylesheet_directory_uri() . '/style.css',
    );
});

page.phpsingle.php内にstyle.cssを追加している例です。

上記の書き方だとstyle.cssnew-style.cssに変更したいと思った時、page.phpsingle.php、どちらの記述も書き直さなければなりません。

例では二つのファイルだけにしか記述していないので、手直しが簡単に思えるかもしれませんが、これが何十個ものファイルに記載されていたとすれば修正作業が大変なのは一目瞭然ですよね。

良い例
add_action('wp_enqueue_scripts', function () {
    wp_register_style(
        'child-style',
        get_stylesheet_directory_uri() . '/style.css',
    );
});
add_action('wp_enqueue_scripts', function () {
    wp_enqueue_style('child-style');
});
add_action('wp_enqueue_scripts', function () {
    wp_enqueue_style('child-style');
});

style.phpというスタイルシートを一元管理(事前登録)するファイルを作成し、 page.phpsingle.php内では登録スタイルシートを呼び出しているだけの例です。

上記の書き方だとスタイルシートのパスstyle.cssnew-style.cssに変更したいと思った時、style.phpのファイルパス記述を修正するだけです。

複数呼び出す可能性があるスタイルシートは、この様な使い方をすると保守性の高いコードが書けるようになります。

呼び出すアクションフック名一覧

CSSを挿入したい場所によって、指定するアクションフック名が変わります。

適切な場所を指定してカスタマイズを行いましょう。

アクションフック名
フロントエンド

wp_enqueue_scripts

管理画面

admin_enqueue_scripts

ログイン画面

login_enqueue_scripts

フロントエンドにFont Awesomeを登録する例

add_action('wp_enqueue_scripts', function () {
    wp_register_style(
        'font-awesome',
        'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css',
        [],
        '6.4'
    );
});

適切にバージョン管理する方法

ファイルの最終更新時刻を利用

add_action('wp_enqueue_scripts', function () {
    wp_register_style(
        'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        [],
        filemtime(get_stylesheet_directory() . '/style.css')
    );
});

filemtimeを利用してバージョン管理をしています。

var指定ではget_stylesheet_directory_uri()ではなくget_stylesheet_directory()を使用している点に気を付けてください。

style.cssファイルが更新されると適切なタイムスタンプに更新されます。

タイムスタンプをdate関数で整形した場合のコード例

add_action('wp_enqueue_scripts', function () {
    wp_register_style(
        'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        [],
        date('YmdHis', filemtime(get_stylesheet_directory() . '/style.css'))
    );
});

こちらの方がカスタマイズする際にソースを確認した時に分かりやすいのでオススメです。

出力するwp_enqueue_style()を忘れずに

wp_register_style()はあくまでスタイルシートをコア登録(事前予約)するだけの関数です。

ソースコードに吐き出したい時はwp_enqueue_style()を必ず使う必要があります。

出力し忘れが無いように、セットで使う必要があると覚えておきましょう。

まとめ記事

WordPressにCSSやJSを追加・削除する方法を全て網羅し、分かりやすく整理したまとめ記事も作成しておりますので、より理解を深めるためにお読み下さい。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。

reCAPTCHAの認証時間が切れたため、ページを再読み込みしてください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次