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_loadedinitフックを使って呼び出しタイミングを遅らせることで解決します。function_exists()でのチェックも組み合わせると安全です。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ