CyberCatHK
CyberCatHK

Reputation: 1310

VS Code highlighted all my wordpress function name

I am using PHP Intelephense(version 1.3.7) which is the latest version and my VS Code is up to date There was no problem before but a few days ago, it keeps on highlighted all my wordpress function name I tried to downgrade my PHP Intelephense but the situation still exist.. Any help will be appreciate

enter image description here

Upvotes: 114

Views: 38395

Answers (9)

zernab hussain
zernab hussain

Reputation: 384

1) Open VS Code.

2) Open the Command Palette:

Press "Ctrl + Shift + P". (Mac: Press Cmd + Shift + P.)

Type > "Preferences: Open User Settings (JSON)" and select it from the list.

3) Edit the settings.json File:

Add or update the following settings in your settings.json file to include "wordpress" in both php.stubs and intelephense.stubs.

{
    "intelephense.stubs": [
        "apache",
        "bcmath",
        "bz2",
        "calendar",
        "com_dotnet",
        "Core",
        "ctype",
        "curl",
        "date",
        "dba",
        "dom",
        "enchant",
        "exif",
        "FFI",
        "fileinfo",
        "filter",
        "fpm",
        "ftp",
        "gd",
        "gettext",
        "gmp",
        "hash",
        "iconv",
        "imap",
        "intl",
        "json",
        "ldap",
        "libxml",
        "mbstring",
        "meta",
        "mysqli",
        "oci8",
        "odbc",
        "openssl",
        "pcntl",
        "pcre",
        "PDO",
        "pdo_ibm",
        "pdo_mysql",
        "pdo_pgsql",
        "pdo_sqlite",
        "pgsql",
        "Phar",
        "posix",
        "pspell",
        "random",
        "readline",
        "Reflection",
        "session",
        "shmop",
        "SimpleXML",
        "snmp",
        "soap",
        "sockets",
        "sodium",
        "SPL",
        "sqlite3",
        "standard",
        "superglobals",
        "sysvmsg",
        "sysvsem",
        "sysvshm",
        "tidy",
        "tokenizer",
        "xml",
        "xmlreader",
        "xmlrpc",
        "xmlwriter",
        "xsl",
        "Zend OPcache",
        "zip",
        "zlib",
        "wordpress"
    ],
    "php.stubs": [
        "*",
        "wordpress"
    ]
}

4) Save the Changes:

Save the settings.json file by pressing Ctrl + S on Windows/Linux or Cmd + S on Mac.

5) Restart VS Code:

To ensure the new settings take effect, close and reopen VS Code.

Upvotes: 2

Meir Gabay
Meir Gabay

Reputation: 3306

I found the perfect solution that actually includes all Wordpress's definitions, so the IntelliSense / Interpreter for PHP will recognize all Wordpress's functions, while developing a plugin or anything related to Wordpress.

  1. Git Clone WordPress source code locally to wordpress - Later on you'll need the absolute path to the wordpress directory
    git clone --depth 1 --single-branch [email protected]:WordPress/WordPress.git wordpress
    
  2. VSCode > Install the PHP Intelephense
  3. VSCode > Edit Settings > I usually include a .vscode/settings.json in my projects; here's how you can :
    {
      "editor.formatOnSave": true,
      "intelephense.environment.includePaths": ["/absolute/path/to/cloned/wordpress"]
    }
    
  4. VSCode shows WordPress's definitions as it should 🥳

Here's a demo of how it works - https://youtu.be/yLgd5OKRXxM

Opinion: I prefer cloning WordPress locally in case I need to debug something during my application development, I'm not sure the other alternatives have this capability.

P.S: Yes, I got that excited about the solution, so I recorded a video with cinematic music :)

Upvotes: 5

Cepheus
Cepheus

Reputation: 4903

I solved this as follows:

Open Your settings.json File: Ctrl + ,

Click on the {} icon in the top right corner to view the JSON settings

Locate the php.stubs Setting. If it's not available, add it.

Add "wordpress" to the Array

Your php.stubs setting should now look something like this:

"php.stubs": [
    "wordpress",
    "*"
]

Save Your Changes

Upvotes: 4

Neon Parmar
Neon Parmar

Reputation: 11

If you load only child theme folder in vs code than it give you highlight on wordpress function. Instead of this, load whole WordPress folder in vs code. It's works for me. Thanks.

Upvotes: 1

jsina
jsina

Reputation: 4849

you just need to add WordPress item to the Intelephense: Stubs from the extension setting.

enter image description here

Upvotes: 1

Adam A Allalou
Adam A Allalou

Reputation: 2019

The quick fix for this is simply to add WordPress to the Intelephense: Stubs list.

1: Press (Ctrl+Shift+X) to the extensions bar on the left and search for PHP Intelephense.

2: Click the settings icon of the extension and choose Extension Settings.

screenshot of extensions bar

3: Scroll down to the bottom to see the list of Stubs.

4: Click on Add Item and choose wordpress from the list.

screenshot of extensions settings menu

If the changes are not affected, try to close and reopen Vscode.

This will solve the issue with built-in WordPress Functions, However, it will not recognize any functions from installed plugins.

Upvotes: 170

jovialcore
jovialcore

Reputation: 666

Adam allalou and drwatsoncode are right and they work but just a reminder, to be sure that the changes are effected, don't forget to close and open your VsCode editor again.

Upvotes: -1

jerclarke
jerclarke

Reputation: 1479

Maybe I'm missing something, but I never have this problem, and I think the reason is just that I open my whole WordPress site directory in VS Code at once.

Are you opening only your theme directory?

If so it makes sense that these functions are missing since they aren't in the project.

Open the whole site and this should go away. You'll also get all your theme and plugin functions imported correctly.

Upvotes: 9

drwatsoncode
drwatsoncode

Reputation: 5233

You have to add "wordpress" to the intelephense.stubs array setting in your VS Code settings file. This array should probably also have many other stubs listed as well. For example: ("wordpress" is at the bottom)

//  VS Code settings.json
{
    // ... other settings here ...
    "intelephense.files.maxSize": 3000000,
    "intelephense.stubs": [
        "apache",
        "bcmath",
        "bz2",
        "calendar",
        "com_dotnet",
        "Core",
        "ctype",
        "curl",
        "date",
        "dba",
        "dom",
        "enchant",
        "exif",
        "FFI",
        "fileinfo",
        "filter",
        "fpm",
        "ftp",
        "gd",
        "gettext",
        "gmp",
        "hash",
        "iconv",
        "imap",
        "intl",
        "json",
        "ldap",
        "libxml",
        "mbstring",
        "meta",
        "mysqli",
        "oci8",
        "odbc",
        "openssl",
        "pcntl",
        "pcre",
        "PDO",
        "pdo_ibm",
        "pdo_mysql",
        "pdo_pgsql",
        "pdo_sqlite",
        "pgsql",
        "Phar",
        "posix",
        "pspell",
        "readline",
        "Reflection",
        "session",
        "shmop",
        "SimpleXML",
        "snmp",
        "soap",
        "sockets",
        "sodium",
        "SPL",
        "sqlite3",
        "standard",
        "superglobals",
        "sysvmsg",
        "sysvsem",
        "sysvshm",
        "tidy",
        "tokenizer",
        "xml",
        "xmlreader",
        "xmlrpc",
        "xmlwriter",
        "xsl",
        "Zend OPcache",
        "zip",
        "zlib",
        "wordpress"
    ]
}

You can also take a look at these github issues:

Upvotes: 187

Related Questions