VSCodeでWordPressコーディング規約に沿って自動整形する方法

composerのインストール


brew install composer

パスを通す


# .zshrcに下記追記
export PATH="$PATH:$HOME/.composer/vendor/bin"

# 設定反映
source ~/.zshrc

PHP_CodeSniffer(phpcs)のインストール


composer global require squizlabs/php_codesniffer

インストールされているコーディング規約を確認


phpcs -i
The installed coding standards are PEAR, Zend, PSR2, MySource, Squiz, PSR1 and PSR12

デフォルトではWordPressのコーディング規約が入っていないのでインストールします。

WordPress Coding Standards(WPCS)のインストール


composer global require wp-coding-standards/wpcs

phpcsに登録


phpcs --config-set installed_paths $HOME/.composer/vendor/wp-coding-standards/wpcs

VSCodeの設定

PHP Sniffer & Beautifierという拡張機能をインストール

Workspaceのsettings.jsonに下記を追加します。
phpcsphpcbfのパスは適宜書き換えてください。


{
    "phpsab.executablePathCS": "/Users/simmon/.composer/vendor/squizlabs/php_codesniffer/bin/phpcs",
    "phpsab.executablePathCBF": "/Users/simmon/.composer/vendor/squizlabs/php_codesniffer/bin/phpcbf",
    "phpsab.standard": "WordPress-Extra",
    "[php]": {
        "editor.formatOnSave": true
    },
    "html.format.endWithNewline": true,
    "editor.insertSpaces": false
}

PHPのダウングレード

上記の設定で以前までは動いていたのですが、HomebrewをアップデートしてPHPのバージョンが8系になってから「FIXER: A Fatal execution error occurred.」とエラーが出て自動整形が効かなくなってしまったので7.4にダウングレードします。
php -vでバージョンを確認して7系であればおそらくそのままで動作すると思います。

インストールされてるPHPの確認


brew search php

brew-php-switcher   php@7.2             phplint             pcp
php ✔               php@7.3             phpmd               pup
php-code-sniffer    php@7.4             phpmyadmin
php-cs-fixer        php@8.0             phpstan
php-cs-fixer@2      phpbrew             phpunit

PHP7.4のインストール


brew install php@7.4

パスを通す

下記2行のコマンドを実行


echo 'export PATH="/opt/homebrew/opt/php@7.4/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/php@7.4/sbin:$PATH"' >> ~/.zshrc

設定反映


source ~/.zshrc

PHP8のシンボリックリンクを削除


brew unlink php

PHP7.4を有効にする


brew services start php@7.4

PHP7.4のシンボリックリンク作成


brew link php@7.4

php -vコマンドを実行して7.4になっていればOK


php -v

PHP 7.4.28 (cli) (built: Feb 28 2022 07:33:39) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies

参考