【koto様】WordPress子テーマのfunctions.phpについて

WordPressで子テーマをカスタマイズ中に、functions.phpをアップしたらサイトが見られなくなった・・・というご相談を頂きました。

ワードプレスで子テーマを使うメリットや、使う際に注意する点をまとめました。

質問:functions.php子テーマにアップロードしたらエラーに

WordPress初心者です。
現在、Lightningテーマを利用中でカスタマイズは子テーマでしております。
今回functions.phpに追加コードを記述をしようと開いたらコードが全て空っぽになっておりました。
そこで、親テーマからfunctions.phpをダウンロードして子テーマにアップロードしたら、
Fatal error: Cannot redeclare lightning_home_content_hidden() ようなエラーが出てサイトが見れなくなりました。
元のfunctions.phpに戻したいのですが、どのようにすればよいかご教示ください。
宜しくお願い致します。


>koto様
ご質問ありがとうございました。
子テーマを作成して使う上で、いつくか注意点があります。

ポイントを解説させて頂きます。

子テーマを作るメリットとは

子テーマを作るメリットは何と言っても親テーマのアップデートの影響を受けにくい点にあります。

親テーマを直接カスタマイズすると、テーマをアップデートした際に変更点が失われて(上書きされて)しまいます。

そのため、既存テーマを利用しサイト運用していくうえでは子テーマを作ることが多いでしょう。

子テーマの作り方

子テーマを作る方法は非常にシンプル。

1.子テーマ用のフォルダを用意する
仮に親のテーマ名をParentTheme
フォルダ名をparent とします。

子テーマ名をChildTheme
フォルダ名をchildとします。

2.style.cssを用意し、先頭行に以下の記述を追加します。

/*
 Theme Name:   ChildTheme
 Theme URI:    
 Description:  
 Author:       
 Author URI:   
 Template:     parent(フォルダ名であることに注意)
 Version:      
 License:      
 License URI:  
 Tags:         
 Text Domain:  
*/

最低限”Template”で親テーマのフォルダが指定されていれば子テーマは動作するでしょう。

以前は

@import url('../parent/style.css');

のような形でCSSをインポートする形が一般的でしたが、現在は推奨されていません。以下のfunctions.phpを利用する方法がコーデックスで紹介されています。

3.functions.phpを作り親のCSSを読み込む記述を追加
WordPress Codex 子テーマ

同名のファイルがあれば、子テーマのファイルを優先して読み込む

ここまでで、子テーマフォルダの中にはstyle.cssとfunctions.phpしかありません。

子テーマの仕組みは、「まず親テーマが読み込まれ、子テーマに同名のファイルがあればそれが読み込まれる」と考えて頂ければスムーズです。

親テーマにも子テーマにもfooter.phpがある場合、子テーマのfooter.phpが優先されます。

カスタマイズしたいテンプレートファイルだけを子テーマにコピーしてカスタマイズするという流れになります。

functions.phpの扱いについて

ただし、functions.phpは単なる上書きではなく、親テーマのfuctions.phpにある関数も、子テーマのfuctions.phpにある関数も両方読み込まれます。

そのため、質問者様のように親テーマのfunctions.phpを子テーマにそのままアップロードすると、エラーになります。(同名の関数が2回実行されることになる)

子テーマがご自身で作成されたのか、誰かに依頼したのか、僕はLightningを使ったことがないのでわかりませんが、子テーマのfunctions.phpはおそらくデフォルトではほとんどが空白であると思われます。

空白のfnctions.phpに、追加したい関数を記述する方法になるでしょう。

こちらもやはりコーデックスをご一読頂いた方が良いかと思います。

WordPress Codex 子テーマ

ご参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。

コメントの前にご確認ください。

  • コメントは承認制のため、反映・表示までお時間を頂きます。
  • メールアドレス等の入力も必須ではありませんので入力の必要はありません。お気軽にどうぞ。(冷やかしは止めてね!)
  • コメントや返信があっても通知は届きませんのでご注意下さい。
  • 忙しい時はレスが遅れることもあります。
  • 当ページによる一切の不利益および損害に関し、責任を取ることはできません。