2026年5月20日
2026年5月20日
Undefined functionエラーを解決する方法【Call to undefined function】
はじめに
「Fatal error: Call to undefined function my_plugin_function()」——存在しない関数を呼び出そうとした場合に発生します。WordPressのプラグインやテーマで最もよく起きるFatal errorの一つです。関数が定義されていないのではなく「まだ読み込まれていない」ケースが多いです。
症状・原因
Call to undefined functionエラーの主な原因:
- プラグインの関数をそのプラグインより前に呼び出している
- functions.phpで別ファイルをincludeし忘れている
- プラグインが無効化されているのに関数を呼んでいる
- PHPのバージョンアップで廃止された関数を使っている(
create_function等) - Composerのオートローダーが設定されていない
解決手順
ステップ1:エラーメッセージを確認
Fatal error: Call to undefined function my_plugin_function()
in /wp-content/themes/my-theme/functions.php on line 15
→ my_plugin_functionという関数が見つからない。
→ その関数がどのプラグイン・ファイルで定義されているか確認します。
ステップ2:読み込みタイミングを修正する(最多パターン)
// ❌ 問題:プラグインがまだ読み込まれていない段階で呼んでいる
// functions.php のトップレベルで直接呼ぶのはNG
my_plugin_function();
// ✅ 解決:plugins_loaded フックで呼ぶ
add_action('plugins_loaded', function() {
my_plugin_function(); // 全プラグイン読み込み後に実行
});
// ✅ または init フック(さらに後)
add_action('init', function() {
my_plugin_function();
});
ステップ3:プラグインが有効化されているか確認
// プラグインが有効か確認してから呼ぶ
if (function_exists('my_plugin_function')) {
my_plugin_function();
}
管理画面の「プラグイン」ページでそのプラグインが有効になっているか確認します。
ステップ4:ファイルのincludeを確認
// ❌ includeを忘れている
my_helper_function(); // helper.phpを読み込んでいない
// ✅ 先にファイルを読み込む
require_once get_template_directory() . '/includes/helper.php';
my_helper_function();
ステップ5:廃止された関数の代替
// ❌ PHP8で廃止された関数
$fn = create_function('$x', 'return $x * 2;');
$arr = split(',', $str); // PHP7で廃止
// ✅ 代替手段
$fn = function($x) { return $x * 2; };
$arr = explode(',', $str);
ステップ6:WooCommerceなど特定プラグインの関数
// WooCommerceの関数を安全に使う
if (class_exists('WooCommerce')) {
// WooCommerceが有効な場合のみ実行
$cart = WC()->cart->get_cart();
}
まとめ
Call to undefined functionエラーの多くは「関数は存在するが読み込みタイミングが早すぎる」が原因です。plugins_loadedやinitフックを使って呼び出しタイミングを遅らせることで解決します。function_exists()でのチェックも組み合わせると安全です。
関連記事: