初期診断

Fatal error: Cannot redeclare …() (previously declared in …)

WordPress の「Cannot redeclare …() (previously declared in …)」:原因と確認方法

更新日 2026-11-01
# ログによく記録される内容
PHP Fatal error:  Cannot redeclare …() (previously declared in /wp-content/plugins/…)

同じ関数名が二度宣言されると、PHP はこのエラーで停止します。WordPress では、二つのプラグイン、あるいはプラグインとテーマが同じ名前の関数を持っているか、同じファイルが二度読み込まれていることがほとんどです。PHP 8.4 では「Cannot redeclare function …()」と表示されます。

どの状況に当てはまりますか?

新しいプラグインが宣言した関数を、別のプラグインかテーマがすでに宣言しています。メッセージには両方のファイルが表示されます。

スニペットが定義した関数はすでに存在しています。同じコードを二度貼り付けたことが原因の場合がよくあります。

プラグインのフォルダーをコピーまたは名前変更し、両方が有効になっています。

主な原因

同名の補助関数を持つ二つのプラグイン:どちらのプラグインも宣言前に function_exists() で確認していません。
コードスニペットの重複:同じ関数が functions.php やスニペット用プラグインに二度追加されています。
同梱ライブラリの二重読み込み:二つのプラグインが同じライブラリを、重複を防ぐ確認なしで読み込んでいます。
プラグインの重複:同じプラグインの旧版と新版が両方とも有効です。

参考資料

  1. User-defined functions (PHP.net)
  2. Debugging in WordPress (Advanced Administration Handbook)

自分で作業したくない方は、WP119 の全自動復旧にお任せください

白画面や致命的エラー(プラグインの競合、PHP バージョンの非互換)は自動処理の対象です。復旧ステーション上の複製でデバッグモードを有効にし、原因のプラグインまたはテーマを特定して無効化します(削除はしません)。メモリ不足による白画面はメモリ上限を引き上げて対処します。復旧後はトップページと内部ページを再検証し、合格した場合のみお客様のホストに書き戻します(WP 管理画面モードでは復旧完了パッケージをお渡しします)。復旧は復旧ステーション上のサイトの複製で行い、再検証に合格してから書き戻します。サイトのデータベースのうち、保護対象テーブル(会員・コメント・注文・フォーム送信)は構造のみ取得します。SSH/FTP モードでは、書き戻しの前にお客様のホストに復旧前バックアップを作成し、書き戻し後の検証に合格しなかった場合はそのバックアップから復元します。復旧を完了できなかった場合、復旧料は全額返金します。

  1. 初期診断:サイトの URL を入力
  2. 復旧ステーションに複製:複製上で作業
  3. 原因の特定:項目ごとの確認
  4. 復旧と再検証:トップページと内部ページ
  5. 書き戻しまたは納品:再検証に合格した場合のみ

このエラーでサイトや管理画面が表示されない場合は、WP119 にお任せいただけます。

サイトを初期診断する →
初期診断 →