个人也比较喜欢WordPress格式化风格,在写主题时也尽量按标准规则写。下面说一下如何在VS Code中使用WordPress编码标准自动格式化代码。
需要用到的:
前3个,安装使用方法省略,自行学习安装,只简单说一下Composer的安装。
Composer的安装也很简单,一路“NETX”。
只需要在Settings Check这步,选择:xampp\php\php.exe。
其它都不用选择。
通过Composer安装PHP CodeSniffer和WordPress编码标准:
composer require --dev squizlabs/php_codesniffer
composer require --dev wp-coding-standards/wpcs
检验是否安装了各种编码规则:
./vendor/bin/phpcs -i
会看到类似:
The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend, Modernize, NormalizedArrays, Universal, PHPCSUtils, WordPress, WordPress-Core, WordPress-Docs and WordPress-Extra
如果没有可以追加:
./vendor/bin/phpcs --config-set installed_paths ./vendor/wp-coding-standards/wpcs
进入. vscode/settings.json添加设置,类似:
{
"[php]": {
"editor.defaultFormatter": "valeryanm.vscode-phpsab",
"editor.formatOnSave": true
},
"phpsab.fixerEnable": true,
"phpsab.executablePathCS": "./vendor/bin/phpcs",
"phpsab.executablePathCBF": "./vendor/bin/phpcbf",
"phpsab.snifferShowSources": true,
"phpsab.snifferMode": "onSave",
"phpsab.allowedAutoRulesets": [
"./.phpcs.xml",
],
"phpsab.standard": "./.phpcs.xml",
}
如果在格式化时,提示类似没找到phpcbf,可以将:
"phpsab.executablePathCBF": "./vendor/bin/phpcbf",
改为:
"phpsab.executablePathCBF": "C:\\Windows\\System32\\vendor\\bin\\phpcbf",
https://haniwaman.com/note/n-22910/
纠正问题
在格式化while 循环时:
<?php while ( have_posts() ) : the_post(); ?>
会将单行写法格式化成:
<?php while ( have_posts() ) : the_post(); ?>
看着很难受,需要添加自定义规则,让其保持单行。
将下面代码保存为phpcs.xml,放到主题项目目录中即可:
<?xml version="1.0"?>
<ruleset name="Custom WordPress Theme">
<description>Custom ruleset for WordPress theme development</description>
<!-- 设置检查的文件路径 -->
<file>.</file>
<!-- 排除不需要检查的目录 -->
<exclude-pattern>*/node_modules/*</exclude-pattern>
<exclude-pattern>*/vendor/*</exclude-pattern>
<exclude-pattern>*/js/*</exclude-pattern>
<exclude-pattern>*/css/*</exclude-pattern>
<exclude-pattern>*.min.js</exclude-pattern>
<exclude-pattern>*.min.css</exclude-pattern>
<!-- 使用 WordPress 编码标准作为基础 -->
<rule ref="WordPress-Core"/>
<rule ref="WordPress-Docs"/>
<!-- 允许 WordPress 风格的内联控制结构 -->
<rule ref="Generic.ControlStructures.InlineControlStructure">
<properties>
<property name="error" value="false"/>
</properties>
</rule>
<!-- 允许单行的 while 循环结构,特别针对 WordPress 的 have_posts() 模式 -->
<rule ref="Squiz.ControlStructures.ControlSignature">
<exclude name="Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace"/>
<exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseBrace"/>
</rule>
<!-- 自定义规则:允许 WordPress 风格的循环结构保持单行 -->
<rule ref="Generic.Formatting.DisallowMultipleStatements"/>
<!-- 设置 PHP 版本 -->
<config name="testVersion" value="7.0-"/>
<!-- 设置 tab 宽度 -->
<config name="tabWidth" value="4"/>
<!-- 设置文本编码 -->
<arg name="encoding" value="utf-8"/>
<!-- 显示进度和详细信息 -->
<arg value="sp"/>
</ruleset>但放主题目录中,开发完还需要删除phpcs.xml文件,我们可以在全局设置中添加绝对路径,打开配置文件settings.json,找到:
"phpsab.executablePathCS": "./vendor/bin/phpcs",
在上面添加phpcs.xml的绝对路径:
"phpsab.standard": "G:/phpcs/phpcs.xml",
我要提问





