[WordPress]CSSとJSをfunctions.phpで管理する

WordPressでCSSとJavaScriptをfunctions.php内で一元管理する方法です。
最初に2つの関数を説明し、実際に記載する方法を紹介します。

コードの利用は自己責任でお願いします。
利用しているテーマやテンプレートによっては正常に動作しない場合があります。

CSSを読み込む

関数「wp_enqueue_style()」を使用します。

<?php wp_enqueue_style( $handle, $src, $deps, $ver, $media ); ?>
パラメータ説明必須初期値
$handleスタイルシートのハンドル名。「ハンドル名-css」としてIDに付与される。必須なし
$srcスタイルシートのURL。空文字列
$deps依存する他のスタイルシートがある場合、配列で指定できる。array()
$verパラメータとしてURLに連結できる。キャッシュ対策に使用可能。false
$mediaメディアを定義する場合に指定できる。‘all’

参考:関数リファレンス/wp enqueue style – WordPress Codex 日本語版

JavaScriptを読み込む

関数「wp_register_script()」を使用します。

<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>
パラメータ説明必須初期値
$handleスタイルシートのハンドル名。「ハンドル名-js」としてIDに付与される。必須なし
$srcスクリプトのURL。false
$deps依存する他のスクリプトがある場合、配列で指定できる。array()
$verパラメータとしてURLに連結できる。キャッシュ対策に使用可能。false
$mediaスクリプトは通常に置かれるが、trueにすると終了タグの前に配置される。false

参考:関数リファレンス/wp enqueue script – WordPress Codex 日本語版

functions.pnpに記載する

実際に読み込ませる場合には以下の様な形でfunctions.phpに記載します。

function add_files()
{
    // CSSの読み込み
    wp_enqueue_style('main', get_template_directory_uri() . '/css/main.css', '', '20210101');

    // JSの読み込み
    wp_enqueue_script('main', get_template_directory_uri() . '/js/main.js', '', '20210101', true);
}
add_action('wp_enqueue_scripts', 'add_files');

管理画面やログイン画面で読み込む

アクションフックを変更する事で読み込むタイミングの変更ができます。

add_action('wp_print_scripts', 'add_scripts');
wp_enqueue_scriptsフロントエンド
login_enqueue_scriptsログイン画面
admin_enqueue_scripts管理画面

パラメータをファイルの更新日付で付与する

「filemtime」関数を利用して、ファイルの更新日付を自動で付与する事で、常にキャッシュ対策をする事が出来ます。

gmdate( 'YmdHi', filemtime( get_theme_file_path( '/assets/css/style.css' ) ) )

組み込み例

function add_files()
{
    // CSSの読み込み
    wp_enqueue_style('main', get_template_directory_uri() . '/css/main.css', '', gmdate('YmdHi', filemtime(get_theme_file_path('/css/main.css'))));

    // JSの読み込み
    wp_enqueue_script('main', get_template_directory_uri() . '/js/main.js', '', gmdate('YmdHi', filemtime(get_theme_file_path('/js/main.js'))), true);
}
add_action('wp_enqueue_scripts', 'add_files');

CSSにメディアクエリを指定する

<?php wp_enqueue_style( $handle, $src, $deps, $ver, $media ); ?>

「$media」の部分でメディアクエリを指定します。

wp_enqueue_style('main', get_template_directory_uri() . '/css/main.css', '', '20210101’, 'all and (min-width: 600px)');

タイトルとURLをコピーしました