WordPressでUndefined function ~ の未定義関数エラーがVisual Studio Codeに出てきた時の対処法をご紹介。
エラーの状況
Visual Studio CodeでWordPressで未定義関数が出てくる
新Macに新しくVisual Studio Codeを新規で入れて、WordPressをローカル上で動かすと下記のようなエラーが大量に出てきました。
WordPressでよく使われるPHP関数がすべて「関数が定義されていません」とエラー表示されていますね。
Visual Studio Code上ではエラーが出るのですが、WordPressはしっかりと動くのですが、結構鬱陶しいので、対処していこうと思います。
Undefined function 'get_header'. intelephense(1010) [XX、XX]
Undefined function 'have_posts'. intelephense(1010) [XX、XX]
Undefined function 'home_url'. intelephense(1010) [XX、XX]
Undefined function 'get_template_directory_uri'. intelephense(1010) [XX、XX]
Undefined function 'the_title'. intelephense(1010) [XX、XX]
Undefined function 'the_permalink'. intelephense(1010) [XX、XX]
Undefined function 'the_time'. intelephense(1010) [XX、XX]
Undefined function 'get_footer'. intelephense(1010) [XX、XX]
Undefined function 'language_attributes'. intelephense(1010) [XX、XX]
Undefined function 'bloginfo'. intelephense(1010) [XX、XX]
Undefined function 'wp_head'. intelephense(1010) [XX、XX]
Undefined function 'body_class'. intelephense(1010) [XX、XX]
Undefined function 'is_page'. intelephense(1010) [XX、XX]
Undefined function 'is_singular'. intelephense(1010) [XX、XX]
Undefined function 'is_post_type_archive'. intelephense(1010) [XX、XX]
Undefined function 'get_template_part'. intelephense(1010) [XX、XX]
エラーのコピーをすると下記のような表示
[{
"resource": "/Users/xxx/project/xxx/app/public/wp-content/themes/xxx/front-page.php",
"owner": "_generated_diagnostic_collection_name_#1",
"code": "1010",
"severity": 8,
"message": "Undefined function 'get_field'.",
"source": "intelephense",
"startLineNumber": 81,
"startColumn": 23,
"endLineNumber": 81,
"endColumn": 32
}]
WordPressでUndefined function ‘~’ . intelephense(1010) [XX、XX]エラーの対処法
今回の原因:拡張機能「PHP Intelephense」
「PHP Intelephense」は、PHPのコード補完や構文チェックをしてくれるVSCodeの拡張機能です。
とても便利な拡張機能なんですが、現在デフォルトはWordPressの関数を「未定義関数(Undefined function)」としてエラー扱いするようになってしまったようです。
関数未定義エラーの解決方法
- 拡張機能「PHP Intelephense」の設定を確認
- 「Intelephense: Stubs」にWordPress追加
①拡張機能「PHP Intelephense」の設定を確認
インストールされている拡張機能一覧の中から「PHP Intelephense」の歯車マークをクリック。
その後、「拡張機能の設定」をクリックし、「PHP Intelephense」の設定をしていきましょう。
②「Intelephense: Stubs」にWordPress追加
「PHP Intelephense」の設定の中で、「Intelephense: Stubs」という項目を探す。
下に「項目の追加」ボタンがあるので、そこから「WordPress」を探して「追加」する。
追加後、すぐにエラーが解消されます。
※上記だとまだACFのエラーなど出てしまう場合
上記だとAdvanced Custom Fieldの関数がまだ関数未定義のエラー表示になってしまいました。
もうこうなったら、「PHP Intelephense」の設定の中の
Intelephense > Diagnostics: Undefined Functions
の
Enable undefined function diagnostics
のチェックを外します。
その後VS codeの再起動をすると設定が反映されます。
これでエラーが表示されなくなります。
(それか、上記だとそもそも未定義の関数をお知らせしてくれなくなるので、拡張機能を入れなくても良いという場合は、PHP Intelephense拡張機能をアンインストールしても良いかもしれませんが…)
以上です!
ありがとうございました!