記事 · 2026年9月7日
WordPress に自分の PHP コードを足す、四つの置き場所と選び方
テーマの functions.php に直接書くのは、たいてい間違いです。Code Snippets、Code Engine、子テーマ、mu-plugins。それぞれ何が残って何が消えるか、壊したときにどう戻すかまで。
「この一行を足せば直る」というコードは、WordPress を使っていれば必ず出会います。管理バーを消す、画像サイズを一つ減らす、プラグインの挙動をフィルターで少し変える。プラグインを一つ増やすより、その十行を自分で置くほうがサイトは軽いままです。
問題は「どこに置くか」で、選び方を間違えると、次のテーマ更新で全部消えます。置き場所は四つあります。
1. まずやってはいけないこと:親テーマの functions.php
いちばん有名で、いちばん危ない場所です。テーマが更新されると、そのファイルは新しいものに置き換わり、あなたの追記は跡形もなく消えます。しかも、書き間違えた瞬間にサイト全体が真っ白になり、管理画面にも入れなくなります(その場合は FTP でその行を消せば戻ります)。
自作テーマで、サイトのためだけに作ったものなら構いません。それ以外なら、下の三つのどれかにしてください。
2. Code Snippets(いちばん普及している)
Code Snippets は百万サイト以上で使われている定番のプラグインです。管理画面でスニペットに名前を付けて保存し、有効・無効を切り替えられます。テーマを替えても残りますし、エラーのあるスニペットは保存時に弾かれるので、真っ白画面になりにくいのも利点です。
迷ったらこれです。
3. Code Engine(私たちのもの)
Code Engine も同じ発想ですが、スニペットを「いつ動かすか」(常に、フロントだけ、管理画面だけ)で分けられて、PHP だけでなく JavaScript や CSS も同じ画面で管理できます。Meow Apps のプラグインの挙動をフィルターで調整するときに、私たち自身が使っているのがこれです。
Code Snippets との違いは好みの範囲で、どちらか一つで十分です。両方入れる理由はありません。
4. 子テーマの functions.php
コードがテーマに強く依存している場合(そのテーマのフックを呼ぶ、そのテーマのテンプレートを差し替える)は、子テーマを作って、その functions.php に書きます。親テーマの更新では消えず、テーマの一部として管理できます。
ただし、テーマを乗り換えた瞬間にそのコードも「消える」ことに注意してください。テーマと無関係なコード(画像サイズ、投稿タイプ、他のプラグインへのフィルター)を子テーマに入れると、次のリニューアルで「あの機能が動かない」の原因になります。
5. mu-plugins(開発者向け、いちばん堅い)
wp-content/mu-plugins/ にファイルを置くと、WordPress はそれを「必ず読み込むプラグイン」として扱います。管理画面から無効化できず、テーマにも他のプラグインにも依存しません。エージェンシーがクライアントサイトに「絶対に消えてほしくない設定」を置く場所はここです。
<?php
// wp-content/mu-plugins/site-tweaks.php
add_filter( 'big_image_size_threshold', '__return_false' );
管理画面に UI は出ません。そういう場所です。
選び方を一行で
- 一般のサイト:Code Snippets か Code Engine
- テーマ専用の調整:子テーマの
functions.php - 消えては困る設定、複数サイトの運用:
mu-plugins - 親テーマの
functions.php:自作テーマのときだけ
壊したときは
どの置き場所でも、PHP の文法エラーは画面を真っ白にします。復旧の順番はいつも同じです。FTP かホスティングのファイルマネージャで、いま足したファイル(またはスニペットのプラグインフォルダ)の名前を変えて無効化し、管理画面に戻り、debug.log でエラーの行を確認する。手順はエラーの原因を探す順番にまとめてあります。
最後に一つ。AI に書いてもらったコードは、動くかどうかを本番で試さないでください。ローカル環境か、少なくともステージングで一度動かしてからです。十行のコードでも、サイトを落とす力は持っています 🙂