サポート » 使い方全般 » 子テーマを再有効化するとFatal errorになり真っ白になる

  • 解決済 de-0612nishio

    (@de-0612nishio)


    お世話になっております。
    私の勉強不足が原因なのですが、今日はじめて見るエラーに遭遇しました。
    サイトの子テーマ化をする際、親テーマのファイル全て(style.css除く)を子テーマのフォルダを作成してコピペします。style.cssに子テーマ化の記述をし(Template: twentyfifteenとTheme Name: fifteen_childe)
    その後、管理画面から有効化して子テーマを適用すれば良いとずっと認識しておりました。実際にそれで問題なく表示されておりました。
    ですが今回テーマを変更しようと親テーマなどに変更した後、再度変更前に適用されていた子テーマを再有効化しましたら、Fatal errorが出て画面が真っ白になり管理画面にも入れない状態になりました。ローカル環境で作業していたので仕事には影響ありませんでしたが、SQLのダンプデータをアップし直さないといけない状態でした。
    以下がエラーの内容になります。
    Fatal error: Cannot redeclare twentyfifteen_widgets_init() (previously declared in C:\xampp\htdocs\プロジェクト名\wp-content\themes\fifteen_childe\functions.php:133) in C:\xampp\htdocs\プロジェクト名\wp-content\themes\twentyfifteen\functions.php on line 141
    このエラー内容を見ますとウィジェットの箇所が引っかかっているような事が記載されていますが、ウィジェットは使用していません。
    子テーマの作成方法をネットで調べましたが、functions.phpだけは特別な扱いが必要という事以外は上記の方法で問題はないようでした。
    子テーマの作成方法にお詳しい方、functions.phpのエラーが出る現象の原因をしておられる方、大変お手数ですがご教授いただけませんでしょうか?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • mocomoco

    (@silent_dandy)

    子テーマの作成時、header.phpやindex.phpなどの通常のテンプレートファイルは子テーマフォルダに存在するテンプレートファイルで上書きされますが、functions.phpは上書きではなく、親テーマのfunctions.phpに追加されるような形になります。

    functions.phpの使用
    style.cssと異なり、子テーマの functions.php は、親テーマの機能を上書きしません。代わりに 親の functions.php に追加して読み込まれます。(正確には、親テーマのファイルの 直前 に読み込まれます。)
    https://wpdocs.osdn.jp/%E5%AD%90%E3%83%86%E3%83%BC%E3%83%9E

    そのため、子テーマフォルダに単純に親テーマのfunctions.phpをコピーしてしまうと、親テーマ側のfunctions.phpに存在する関数名が二重に定義され、今回のようなエラーが発生することがあります。

    単純な解決方法としては、子テーマ側のfunctions.phpは親テーマからのコピペで作成するのではなく、php開始タグ(<?php)のみを記述した空のfunctions.phpを用意してからカスタマイズしたい項目を記述していけば良いです。

    トピック投稿者 de-0612nishio

    (@de-0612nishio)

    mocomocoさん、ご返信頂きまして誠にありがとうございます。
    上記のように試しましたところ、上手くできました。
    しかし子テーマに「include(TEMPLATEPATH」等の記載をしているサイトは子テーマに向いていないと理解できましたので、こちらの問題も解決しました。
    お手数お掛けしました。
    ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「子テーマを再有効化するとFatal errorになり真っ白になる」には新たに返信することはできません。