WordPressカスタマイズはfunctions.phpとカスタムプラグインどちらに書くべきか
この記事でわかること
- はじめに
- functions.phpに書くとは
- カスタムプラグインに書くとは
- どちらを選ぶべきか
- 実際の事例
- まとめ
はじめに
WordPressで独自の処理を追加したいとき、どこに書けばいいか迷った経験はありませんか?
代表的な選択肢は2つあります。
- 子テーマの
functions.php - カスタムプラグイン
どちらも「PHPで処理を追加する」点は同じですが、考え方が違います。
functions.phpに書くとは
子テーマの functions.php はテーマに紐づいたカスタマイズを書く場所です。
// 子テーマの functions.php
function my_custom_function() {
// 処理
}
add_action('wp_head', 'my_custom_function');
メリット
– テーマと一緒に管理できてシンプル
– WordPressの推奨する書き方
デメリット
– テーマを変更すると処理が消える
– テーマに依存しない処理まで混在しやすい
カスタムプラグインに書くとは
プラグインはテーマとは独立して動作します。管理画面から有効化・無効化でき、テーマを変えても処理が残ります。
<?php
/*
Plugin Name: My Custom Plugin
*/
function my_custom_function() {
// 処理
}
add_action('wp_head', 'my_custom_function');
メリット
– テーマを変更しても処理が引き継がれる
– 機能ごとに分離して管理できる
– 読み込み順を制御しやすい
デメリット
– ファイルを別途管理する手間がある
どちらを選ぶべきか
判断基準はシンプルです。
テーマに依存する処理 → functions.php
– レイアウト調整
– テーマ固有のウィジェット登録
– テーマのスタイル変更
テーマに依存しない処理 → カスタムプラグイン
– フォームのカスタマイズ
– ショートコードの追加
– 外部サービスとの連携
実際の事例
あるWordPressサイトのPHPバージョンアップ案件で、こんなカスタムプラグインが使われていました。
// スマホ用サイドバーを登録(テーマ変更後も残したい)
register_sidebar(array(
'name' => 'スマホ用 Home Left',
'id' => 'sp-homeleft-widget-area',
));
// WordPressの自動整形をオフ(サイト全体に影響)
remove_filter('the_content', 'wpautop');
// お問い合わせフォームのキーボード対策(Android Gboard)
add_filter('wp_footer', function() {
echo '<script>
jQuery(".wpcf7-form input[type=text]").attr("inputmode","text");
jQuery(".wpcf7-form input[type=email]").attr("inputmode","email");
</script>';
});
register_sidebar や remove_filter はテーマに依存しない処理なので、プラグインに分離したのは理にかなっています。
まとめ
| functions.php | カスタムプラグイン | |
|---|---|---|
| テーマ変更の影響 | 消える | 残る |
| 管理のしやすさ | シンプル | 機能ごとに分離 |
| 向いている処理 | テーマ固有 | サイト全体・外部連携 |
「このサイトのテーマは今後も変えないから functions.php でいい」という判断も正解です。重要なのはルールを決めて一貫させること。チームで開発する場合は特に、どちらに書くかの基準をあらかじめ決めておくと混乱が減ります。
TAG
