以前、子テーマの作成方法についてお伝えしましたが今回はその続きです。
ちなみに、この記事を理解するには、まず WordPress の子テーマについて理解して置く必要があります。子テーマについてはこちらの記事にまとめていますので、「子テーマって何!?」という場合は、まずこちらからチェックしてください。
子テーマにfunctions.phpを加えたい場合
さて、この子テーマ、カスタマイズしたい部分だけ、カスタマイズしたいファイルだけを上書きすることができる便利な機能なんですが、functions.php に関しては扱いに注意が必要です。
その注意点を一言でまとめるなら・・・
『追加はできるが、上書きはできない』
という感じでしょうか。もうちょっと詳しく説明していきましょう。
テンプレートファイル(header.phpやcontent.phpなど)やスタイルシートを子テーマで作成した場合
通常、子テーマにテンプレートファイルやスタイルシートを作成した場合、該当する部分を上書きすることになります。
例えば、元々のスタイルシートにはブログのタイトルの文字色が黒で指定されていたとします。しかし子テーマのフォルダの中に追加したスタイルシートで、新たにブログタイトルの文字色を赤に指定すると、こちらの設定が反映されます。
つまり、親テーマで指定している要素を改めて指定し直す事ができるので、上書きしていると言えると思います。
functions.php を子テーマで作成した場合
一方で functions.php を子テーマのフォルダの中に作った場合は同じようになりません。親テーマに記述されていることを上書きしてくれないのです。
もし、親テーマに記述してあることを改めて記述してしまうと、エラーが発生して WordPress が表示できなくなってしまいます(恐ろしい・・・)。そのため、functions.php の内容を変更したい場合は、親テーマの方を直接いじる方が無難です。
当然、親テーマのアップデートがあったりなんかすると、変更した内容が失われてしまいますので、注意が必要です。
しかし、親テーマに記載されていない内容を追加したい場合は、子テーマ内に functions.php を作ってカスタマイズすることができます。子テーマフォルダ内に作成した functions.php をカスタマイズする場合は、追加したい内容を以下のように記述していく感じです。
<?php /* ここに新しく追記 */ ?>
functions.php をカスタマイズしたい場合は注意してください。
“【注意】functoins.phpをWordPressの子テーマに追加する場合” への7件のフィードバック
こんにちは!^^
この記事すごく役に立ちました。ありがとうございます。
子テーマのfunctions.phpは、重複できないということでしたら
親テーマのfunctions.phpの内容をコピーして子テーマのfunctions.phpに貼り付け後、親テーマのfunctions.phpの内容を削除すれば、エラーにならないってことですね。
ビートおやじさん
コメントありがとうございます。
> 親テーマのfunctions.phpの内容を削除すれば、エラーにならないってことですね。
そうですね。ただ親テーマは定期的にバージョンアップがあるので、
その時親テーマの functions.php も更新され、エラーになると思います。
お返事ありがとうございます^^
そうですね、バージョンアップの時は気をつけないといけないですね。
ありがとうございました。
>もし、親テーマに記述してあることを改めて記述してしまうと、エラーが発生して WordPress が表示できなくなってしまいます。
functions.php を子テーマのフォルダの中に作ってしまし、
まさに今この失敗をしでかして(サイトが見れない状態に)パニック状態でした。
本当にありがとうございます。こちらの記事に救われました。
苺飴さん
ありがとうございます。
WordPressが突然真っ白になると焦りますよね。
解決の助けになってよかったです。
こんにちは、
すごく分かりやすい記事でとても参考になりました。
一つ質問よろしいですか?
他のPHPファイルも同じように上書きはされないのでしょうか?
たとえばheader.phpとかfooter.phpなど
functions.phpと同様にカスタマイズ部分だけを記述すればよいのでしょうか?
ふくすけさん
コメントありがとうございます。
他のPHPファイルは上書きできます。
ただし、カスタマイズ部分だけではなく、まるまるコピーして書き換えてください。
例えば header.php をカスタマイズしたい場合は、親テーマの header.php を子テーマにコピーして変更したい箇所のみを編集します。