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_sidebarremove_filter はテーマに依存しない処理なので、プラグインに分離したのは理にかなっています。

まとめ

functions.php カスタムプラグイン
テーマ変更の影響 消える 残る
管理のしやすさ シンプル 機能ごとに分離
向いている処理 テーマ固有 サイト全体・外部連携

「このサイトのテーマは今後も変えないから functions.php でいい」という判断も正解です。重要なのはルールを決めて一貫させること。チームで開発する場合は特に、どちらに書くかの基準をあらかじめ決めておくと混乱が減ります。

ブログ

BLOG

PAGE TOP