いつも煩雑になりがちなheader.php
に記載している情報を、メンテナンス性を向上させる目的でfunctions.php
に書くことを覚えたので、共有します。
他のテーマファイルについては、以下の記事で書いてますのでお時間ありましたら合わせてご覧ください。
ファイルの構造や解説等、Wordpress(以下、WP)のテーマを自作する際の基本的な部分は、こちらの記事で紹介しています。
- 【初心者向け】Wordpressテーマを自作する際に分かってると良いかもしれない事
-
index.php
のコードを知りたいよって方はこちら
【初心者向け】Wordpressテーマを自作する[index.php] -
header.php
のコードを知りたいよって方はこちら
【初心者向け】Wordpressテーマを自作する[header.php] -
footer.php
のコードを知りたいよって方はこちら
【初心者向け】Wordpressテーマを自作する[footer.php]
functions.php
はWPの基本動作をカスタマイズするファイルのため、少しでも書き方を間違えると、サイト自体が表示されなくなったり、エラーが出たりします。
下記コードをコピペする時もそうですが、既存のコードが記載されている個所に追記する場合は画面が真っ白になったり、エラーが出ても慌てず、まず追記した箇所を削除して、何が悪かったのか、検証してください。
良くあるのだと、コードの先頭に<?php
、末尾に?>
の書き忘れ・ダブり、コピペしたコードが、WPから削除された関数(非推奨)を使用している、関数が競合している等です。
当然ですが、functions.php
をカスタマイズする時は、いきなり本番環境に適用するのはやめましょう。
毎度の、とりあえず解説はいいからコードだけ、の方は以下をどうぞ。
コード
functions.php
の<?php
から?>
の間に入れてください。
下記コードは、CSS
5種類(reset.css含む)、Webフォント
を3種類読み込んでいます。
//header読み込みファイル////////////////////////////////////////////////
function base_structure_style() {
//Baseなので別読み込み
wp_enqueue_style(
'styleBase',
get_template_directory_uri(). '/style.css',
array(),
'1.0.0'
);
wp_enqueue_style(
'styleReset',
get_template_directory_uri(). '/css/reset.css',
array(),
'1.0.0'
);
}
add_action('wp_enqueue_scripts', 'base_structure_style');
function add_link_files() {
//StyleSheet
wp_enqueue_style(
'styleL',
get_template_directory_uri(). '/css/style-large.css',
array(),
'1.0.0',
'screen and (min-width: 1025px)'
);
wp_enqueue_style(
'styleM',
get_template_directory_uri(). '/css/style-medium.css',
array(),
'1.0.0',
'screen and (min-width: 600px) and (max-width: 1024px)'
);
wp_enqueue_style(
'styleS',
get_template_directory_uri(). '/css/style-small.css',
array(),
'1.0.0',
'screen and (max-width: 599px)'
);
//webFont
//FontAwesome
wp_enqueue_style(
'fontawesome',
'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css',
array(),
'6.1.1'
);
//GoogleFont NotoSans
wp_enqueue_style(
'noto-sans',
'https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100;300;400;500;700;900&display=swap',
array(),
null
);
//GoogleFont Poiret One
wp_enqueue_style(
'poiret-one',
'https://fonts.googleapis.com/css2?family=Poiret+One&display=swap',
array(),
null
);
}
add_action('wp_enqueue_scripts', 'add_link_files');
解説
functions.phpとは
Codexでも書かれていますが、WordPress(以下、WP)の基本機能をカスタマイズするためのファイルです。
デフォルトで利用される方は必要ないように見えますが、使い方等覚えていて損はないかなと思います。
自作テーマを作るなら、functions.php
はバリバリ使いますので、覚えましょう!
(細かい解説はCodexをご覧ください)
コード解説(CSS読み込み)
コード自体にもコメント入れていますが、
function base_structure_style() {
は、基本的に増えたり減ったりするものではなく、一度配置すると削除することのないCSSなので(reset.cssは違いますが)私は別に読み込ませています。
うっかり消してしまった!を避ける意味もあります(時間がたつとヤラカスので)
function
から(){
の間はお好みのキーワード等入れることができますので、自分で後で確認しても分かる様にしていると良いですね。
function
の中で読み込ませるファイル名等を指定します。
wp_enqueue_style(
'styleBase',
get_template_directory_uri(). '/style.css',
array(),
'1.0.0'
);
wp_enqueue_style
でここに書いてるCSSファイルを読み込むよーと言う指示になります。
複数ファイルを読み込む場合は、);
で区切って、function
の中に入れていきますが、'styleBase',
の部分は、ハンドルとして利用されるので、同じ文言にならないように注視してください。
get_template_directory_uri().
はテーマファイルのフォルダの中を参照してくれるコードです。
いちいちフルパス書かなくても良いので、テスト環境から本番環境に移動しても安心。
'/style.css',
は読み込ませたいファイル名。
別フォルダに置いている場合は/css/style.css
になります。
そもそもWPのテーマファイルでstyle.css
は、テーマフォルダ直下に置いておかなければならないので、style.css
だけは移動しちゃだめです。
上記はあくまでも例えとして記載しています。
array(),
の箇所は、Codexではこのスタイルシートが依存する他のスタイルシートのハンドル配列
とあります。
要するに、ここで指定したファイルよりも先に読み込ませたいファイルのハンドルを指定する個所です。
依存関係がない場合は、array(),
を指定し、ある場合は、'styleBase',
と言った感じでハンドルを指定します。
読み込ませる順番がおかしくならない様に注意して指定してください。
'1.0.0'
は読み込ませるスタイルシートのバージョン。バージョン管理をしていないのであればfalse
でOK。
あとは、}
で閉じてadd_action
}
add_action('wp_enqueue_scripts', 'base_structure_style');
wp_enqueue_script
がheader
の所定の場所で上で書いたファイルを読み込ませる指定、base_structure_style
は、この中で指定しているファイル読んで指定した動作させてねーって感じです。(ざっくり)
このコードの最初に書いたfunction base_structure_style
のfunction
を抜いた文言です。
他とダブらない様に注意。
コード解説(Webフォント読み込み)
FontAwesome
GoogleFontsのおかげで、だいぶwebフォントの導入の敷居も低くなりました。
でもフォントごとにCDNを読み込ませる必要があり、header.php
にわんさか追記してしまうと見難く、メンテナンス性が損なわれるので、これもfunctions.php
に書いてしまいます。
//FontAwesome
wp_enqueue_style(
'fontawesome',
'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css',
array(),
'6.1.1'
);
みんな大好きFontAwesome
!
アイコンの素材を画像で用意せずに簡単にいい感じのアイコンが実装できる優れもの!
以前は、すぐに実装できたのですが、最近は無料の会員登録をしないとCDNコードが取得できないようなので、会員登録をしてから行ってください。
検索すれば実装方法等はたくさん出てきますので、ここは割愛します。
functions.php
に書いているコード自体も、読み込ませるCDNが違うだけでスタイルシートの時とほぼ変わりません。
Google Fonts
GoogleFontは少し癖があって、ここまで来るまでにごたごたしました。
実装の仕方などは割愛します。
実装の基本がわからない人は検索して調べてください。
まず<link rel="
で始まる個所は必須で、functions.php
に書くことは出来ませんでした。(なんで?)
なので、これだけはheader.php
に書きます。
複数のフォントを読み込んでも、この2行さえあれば大丈夫です。
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
header.php
に書き込んだら、GoogleFontで取得した<link href="
の部分のURLをファイルを読み込む箇所に書きます。
//GoogleFont NotoSans
wp_enqueue_style(
'noto-sans',
'https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100;300;400;500;700;900&display=swap',
array(),
null
);
取り合えず、読み込む書体のウエイト(太さ)はありったけ全部にしてます。
コードは源ノ角ゴシック(NotoSans)
です。
バージョンの箇所は、Googleフォントの場合はnull
にします。
バージョンを入れると読み込んでくれません(なんで?)
使いたいWebフォントの読み込みが完了したら
add_action('wp_enqueue_scripts', 'add_link_files');
で実行します。
どこで読み込ませるの???
functions.php
にスタイルシートとWebフォントを読み込ませたら、header.php
に読み込ませる!と私思ってました。
add_action('wp_enqueue_scripts', '***');
で読み込んだファイルは、WPでは自動的にheader.php
に読み込んでくれます。
まとめ
規則性さえわかってしまえば案外簡単にfunctions.php
にスタイルシートとWebフォントを読み込ませることができます。
私としてはheader
に書き込むよりもこちらの方がバージョン管理やファイルの構造がわかりやすいので、最近のテーマはfunctions.php
にほとんど書き込んでいます。
ただ、functions.php
は他のカスタマイズコードも書き込むので、機能ごとに別ファイルにして、メインのfunctions.php
で読み込ませる形がベストかと思います。
10年以上WPでWEBサイト制作をしていますが、独学のため、色々間違えている個所などありましたらご指摘いただけますと幸いです。