LESSON / WP LOAD

共通テンプレートとCSS・JavaScriptを読み込む

header.phpとfooter.phpへ共通部分を分け、functions.phpからCSSとJavaScriptを読み込みます。

目安 75分 コース進捗 0 / 17

GOAL

このレッスンでできるようになること

  • ヘッダーとフッターを共通化できる
  • CSSとJavaScriptをWordPressの方法で読み込める

すべてのページで使うヘッダーとフッターは、テンプレートパーツへ分けます。CSSやJavaScriptはHTMLへ固定パスを書くのではなく、WordPressの読み込み機能へ登録します。

共通部分を分割する目的

共通部分を分割し、CSSとJavaScriptをWordPressの仕組みで読み込むと管理しやすくなります。

ヘッダー、本文、フッター、CSS、JavaScriptを組み合わせてページを作る流れ
ヘッダー、本文、フッター、CSS、JavaScriptを組み合わせてページを作る流れ

すべてのテンプレートに同じヘッダーとフッターを書くと、メニューを変更するたびに複数ファイルを修正する必要があります。共通部分をheader.phpfooter.phpへ分け、各テンプレートから読み込みます。

記事カードやパンくずリストなど、ページの一部分を再利用するときはテンプレートパーツへ分けます。分割はファイル数を増やすことが目的ではなく、同じ構造を1か所で管理するために行います。

共通部分を分ける

次の画像は、「共通部分を分ける」で扱うコードや構成をブラウザで表示した結果です。

「共通部分を分ける」で扱うコードや構成の表示結果
「共通部分を分ける」で扱うコードや構成をブラウザで表示した結果
my-original-theme/
├── header.php
├── footer.php
├── functions.php
├── index.php
└── assets/
    ├── css/style.css
    └── js/main.js

テンプレートから呼び出す

次の図では、「テンプレートから呼び出す」の仕組みや関係を確認できます。

「テンプレートから呼び出す」の仕組みや関係を示す図
「テンプレートから呼び出す」の仕組みと関係
<?php get_header(); ?>
<main>
  <!-- ページごとの内容 -->
</main>
<?php get_footer(); ?>

CSSとJavaScriptを正しく読み込む

テーマのCSSやJavaScriptは、テンプレートへ固定のlinkscriptを直接書くのではなく、functions.phpから読み込みます。WordPressへ登録することで、依存関係や読み込み順を管理できます。

  • CSSはwp_enqueue_style()で登録する
  • JavaScriptはwp_enqueue_script()で登録する
  • テーマ内URLはget_theme_file_uri()などで取得する
  • ライブラリへ依存する場合は依存関係を指定する
  • 更新したファイルがキャッシュされないようバージョンを管理する

functions.phpでファイルを登録する

次の図では、「functions.phpでファイルを登録する」の仕組みや関係を確認できます。

「functions.phpでファイルを登録する」の仕組みや関係を示す図
「functions.phpでファイルを登録する」の仕組みと関係
<?php
function my_theme_enqueue_assets() {
  wp_enqueue_style(
    'my-theme-style',
    get_theme_file_uri('/assets/css/style.css'),
    array(),
    wp_get_theme()->get('Version')
  );

  wp_enqueue_script(
    'my-theme-script',
    get_theme_file_uri('/assets/js/main.js'),
    array(),
    wp_get_theme()->get('Version'),
    true
  );
}
add_action('wp_enqueue_scripts', 'my_theme_enqueue_assets');

固定URLを書かない

ローカル環境のドメインやテーマフォルダー名をHTMLへ直接書くと、公開先へ移したときにURLが壊れます。サイトURL、ホームURL、テーマ内ファイルのURLはWordPressの関数から取得します。

画像が記事内容として管理画面から変更されるなら、テーマフォルダーへ固定せずメディアライブラリで管理します。テーマのロゴや背景など、デザインの一部として固定する画像とは保存場所を分けます。

読み込み結果を開発者ツールで確認する

  1. ページのHTMLソースでCSSとJavaScriptのURLを確認する
  2. Networkで対象ファイルのステータスが200か確認する
  3. Consoleに読み込みエラーやJavaScriptエラーがないか確認する
  4. CSSを変更し、ブラウザを更新して反映されるか確認する
  5. 別の固定ページと投稿ページでも共通部分が表示されるか確認する

見た目が崩れたときは、分割前後のHTML構造を比較します。開始タグをheader.phpへ置き、対応する終了タグだけを別ファイルへ移すと、構造を追いにくくなるため注意してください。

CHECK POINT

完了条件