functions.phpに何でも書くのは危険です
WordPressをカスタマイズしていると、「とりあえずfunctions.phpに書けばいいか」と思いがちです。実際、functions.phpはテーマの機能を拡張するための便利なファイルですが、何でも書いていいわけではありません。
書き方を間違えると管理画面にログインできなくなったり、テーマ更新のたびに設定が消えたりとトラブルの原因になります。この記事では「functions.phpに書いてはいけないコード」を3つ紹介します。WordPressのカスタマイズをこれから本格的に始める方はぜひ確認しておいてください。
① 親テーマのfunctions.phpへの直接編集
なぜダメなのか
親テーマのfunctions.phpを直接編集すると、テーマをアップデートした際に変更内容がすべて上書きされて消えてしまいます。セキュリティ修正やバグ修正のためにテーマを更新するたびに、カスタマイズをやり直すことになります。
正しい書き方
必ず**子テーマのfunctions.php**に書くようにしましょう。
// 子テーマの functions.php に書く
function my_custom_function() {
// カスタマイズ内容
}
add_action( 'wp_enqueue_scripts', 'my_custom_function' );子テーマを使えば、親テーマを更新してもカスタマイズ内容は消えません。
② プラグインで管理すべき機能のコード
なぜダメなのか
「お問い合わせフォームのカスタマイズ」「Google Analyticsのトラッキングコード挿入」「リダイレクト処理」など、テーマとは独立して動くべき機能をfunctions.phpに書いてしまうと、テーマを変更したときに機能ごと消えてしまいます。
たとえばサイトのデザインをリニューアルしてテーマを変えた瞬間、お問い合わせフォームが消える……というのはよくあるトラブルです。
正しい書き方
テーマに依存させたくない機能は、プラグインとして切り出すか、既存のプラグインを使うのが正解です。
// NG:functions.phpにトラッキングコードを直書き
function add_tracking_code() {
echo '<script>/* Google Analytics */</script>';
}
add_action( 'wp_head', 'add_tracking_code' );// OK:専用プラグイン(例:Code Snippets)を使って管理する
// または functions.php ではなく mu-plugins に置く「この機能はテーマが変わっても残すべきか?」を判断基準にすると迷いにくくなります。
③ PHPの構文エラーになるコード
なぜダメなのか
これが一番やってはいけないミスです。functions.phpに構文エラーのあるPHPコードを書いてしまうと、WordPressの管理画面にアクセスできなくなります。真っ白な画面(ホワイトスクリーン)になって何も操作できなくなるので、初心者には特に怖いトラブルです。
よくあるミスは以下のようなものです。
// NG例①:閉じ括弧の忘れ
function my_function() {
echo 'hello';
// } ← これを忘れると致命的
// NG例②:シングルクォートとダブルクォートの混在
echo 'hello"; // エラー
// NG例③:PHPタグの二重記述
<?php
<?php // ← 2回書いてしまう対処法・予防策
編集前にバックアップを取る FTPやプラグイン(UpdraftPlus など)でバックアップを取ってから編集する習慣をつけましょう。
ローカル環境で先にテストする Local などのローカル開発環境で動作確認してから本番に反映するのが安全です。
もしホワイトスクリーンになったら FTPでサーバーにアクセスして、wp-content/themes/子テーマ名/functions.phpを開き、追加したコードを削除または修正してください。
躓きやすいポイント
「動いているからOK」は危険 構文エラーがなくても、関数名が他のプラグインやテーマと被っている(関数名の重複)と致命的なエラーになることがあります。関数名には自分のサイト固有のプレフィックス(接頭辞)を付ける習慣をつけましょう。
// NG:汎用的すぎる関数名
function custom_function() {}
// OK:プレフィックスを付けて衝突を防ぐ
function mysite_custom_function() {}functions.phpの末尾に?>を書かない PHPファイルは閉じタグ?>を省略するのが推奨されています。閉じタグの後ろに半角スペースや改行が入ると「ヘッダーがすでに送信されている」エラーの原因になります。
まとめ
functions.phpに書いてはいけないコードを3つ紹介しました。
- 親テーマのfunctions.phpへの直接編集 → 必ず子テーマに書く
- テーマに依存させたくない機能 → プラグインで管理する
- 構文エラーのあるコード → バックアップ・ローカルでのテストを徹底する
「なんかよくわからないけどとりあえずfunctions.phpに書いた」が積み重なると、後から修正するのが大変になります。最初から正しい場所に書く意識を持つだけで、WordPressのカスタマイズがぐっと安全になりますよ。
関連記事:wp_nav_menu()でカスタムナビゲーションを実装する方法
コーディングの委託・お仕事に関するお問い合わせはこちらからどうぞ。

