「Fatal error: Cannot redeclare」と表示されるとき

スポンサーリンク

WordPressで子テーマを作成して、子テーマの中にfunctionを記述するときによく発生します。

Fatal error: Cannot redeclare twentytwelve_wp_title() (previously declared in C:\xampp\htdocs\ ... \wp-content\themes\child\functions.php:10) in C:\xampp\htdocs\ ... \wp-content\themes\twentytwelve\functions.php on line 9999

エラーメッセージの意味は、「同じ関数は2度定義できない」という意味です。

たとえば、テーマにあるtwentytwelve_wp_title関数を子テーマでカスタマイズする場合、子テーマのfunctions.phpにもtwentytwelve_wp_title関数を作成することになるので、2回定義したことになり、自然とエラーになります。

これを防ぐには、2回目の定義とみなされるオリジナルのfunctions.phpのtwentytwelve_wp_title関数について、「同じ関数が定義されていなかった場合は」という条件を追加します。

具体的には、元のテーマのfunctions.phpにある関数(function)を「もしも ... 関数が存在しなければ ... 」というif文で囲みます。

if (!function_exists('twentytwelve_wp_title')) {
    function twentytwelve_wp_title( $title, $sep ) {
...略...
    	return $title;
    }
}

PHPの基礎が身に付いたかチェックするなら

PHP「直す力」養成ドリル
スポンサーリンク