Complete guide to Wordpress Plugin Development with VS-Code
Because I did not find a complete article that includes plugins and configuration, I assembled my own, after I spent some time to get a fully functional environment.
Mandatory plugins
List of plugins to be able to syntax-highlight and auto-complete php and wordpress framework code.
- Autocompletion of PHP code vscode-intelephense (IMHO better alternative to the vscode default)
- Autocompletion of wordpress hooks wp-hooks/vscode-wordpress-hooks
- Autocompletion of wordpress core functions wordpresstoolbox
Lastly configure the Wordpress Stub in PHP Intelephense
as described in this Github Issue. Alternativly you can include a whole wordpress directory manually as project folder.
Now you should be good to go.
Optional plugins
This is an opinionated list of helpful plugins for general software development with PHP code:
- Composer auto-completion with All-in-One composer plugin.
- If you use
.editorconfig
in your repository, this plugin parses and applies it for. - To lint via phpcs, use php-codesniffer. There is another plugin with more installs, but that wouldn’t work and is unmaintained since 2018. This one here works for me.
After setting up your phpcs.xml.dist
with the prefered sniffs, you need phpcs discover all your installed sniffs.
The most easy way is via dealerdirect/phpcodesniffer-composer-installer
.
Links and helpful resources
- ‘VS Code Extensions for WordPress Development’ by Chris Wiegmann (2021) on WP-Development.
- ‘5 Top WordPress Excetions for Visual Studio Code’ by David Ramel
- ‘PHP CodeSniffer and WordPress Coding Standards for VS Code’
Appendix
Manual phpcs sniff discovery
Update 2023/04/25: Today was the first time I used composer suggest
and stumbled across the dealerdirect/phpcodesniffer-composer-installer
package, which takes care of finding all sniffs in the vendor packages. I leave the manual configuration here for completeness.
Till now I didn’t come accross any other way of doing this, but you have to configure the installed_path to point to each of the phpcs sniffs by an absolute path.
The following line works for my setup, with the four different sniffs phpcompat (incl. wp, paragonie) and wordpress code standard.
./vendor/bin/phpcs --config-set installed_paths \
$(pwd)/vendor/phpcompatibility/phpcompatibility-wp,\
$(pwd)/vendor/phpcompatibility/php-compatibility,\
$(pwd)/vendor/phpcompatibility/phpcompatibility-paragonie,\
$(pwd)/vendor/wp-coding-standards/wpcs