芝麻web文件管理V1.00
编辑当前文件:/home/felaukpo/public_html/wp-content/plugins/cartflows/docs/wiki/WordPress-Coding-Standards.md
# WordPress Coding Standards CartFlows enforces strict coding standards across PHP and JavaScript using automated tools integrated into the development workflow. ## PHP Standards ### PHPCS + WordPress Coding Standards CartFlows uses **PHP_CodeSniffer** (PHPCS) with the **WordPress Coding Standards** ruleset plus **VIP-Go** rules. **Configuration file:** `phpcs.xml.dist` ```bash # Check coding standards composer lint # Auto-fix fixable violations composer format ``` ### Ruleset (`phpcs.xml.dist`) The ruleset includes: - **WordPress** — Core WordPress PHP standards - **WordPress-Extra** — Additional WordPress best practices - **WordPress-Docs** — Documentation requirements - **VIP-Go** — Automattic VIP Go platform standards ### Custom Sanitizer Registration `wc_clean` is registered as a recognized sanitizer function in `phpcs.xml.dist`. PHPCS will not flag it as an unrecognized sanitizer: ```xml
``` Use `wc_clean()` for WooCommerce data sanitization (it wraps `wp_kses_post` for arrays, `sanitize_text_field` for strings). ### Excluded Paths These directories are excluded from PHPCS scanning: ```xml
admin-core/assets/
vendor/
node_modules/
libraries/
tests/php/
``` ### Key Rules Applied | Category | Rule | Pattern | |----------|------|---------| | Input sanitization | Always sanitize `$_POST`, `$_GET` | `sanitize_text_field()`, `wc_clean()`, `absint()` | | Output escaping | Always escape output | `esc_html()`, `esc_attr()`, `esc_url()`, `wp_kses_post()` | | Nonce verification | Verify before processing | `wp_verify_nonce()` / `check_ajax_referer()` | | Capability checks | Before mutations | `current_user_can( 'manage_options' )` | | File access protection | Top of every file | `if ( ! defined( 'ABSPATH' ) ) { exit; }` | --- ## PHPStan Static Analysis **Configuration file:** `phpstan.neon` ```bash # Run static analysis composer phpstan ``` ### Stubs PHPStan uses custom stubs for CartFlows and WordPress: | Stub Package | Purpose | |-------------|---------| | `szepeviktor/phpstan-wordpress` | WordPress function stubs | | `php-stubs/wordpress-stubs` | WordPress core stubs | | `php-stubs/woocommerce-stubs` | WooCommerce stubs | | `tests/php/stubs/cf-stubs.php` | CartFlows-specific stubs | Regenerate CartFlows stubs after significant class changes: ```bash composer update-stubs ``` --- ## JavaScript Standards ### ESLint **Configuration:** `@wordpress/eslint-plugin` (WordPress standard ESLint config) ```bash npm run lint-js # Check JS/JSX files npm run lint-js:fix # Auto-fix violations ``` Key rules enforced: - No `console.log` in production code - Consistent React hook usage (rules-of-hooks) - Import ordering - No unused variables ### Prettier **Package:** `wp-prettier` (WordPress-flavoured Prettier) ```bash npm run pretty # Check formatting npm run pretty:fix # Auto-fix formatting ``` Prettier handles: - Consistent quote style (single quotes) - Trailing commas - Line length - Bracket spacing ### Stylelint (CSS) ```bash npm run lint-css # Check SCSS/CSS files npm run lint-css:fix # Auto-fix violations ``` --- ## Commit Message Standards CartFlows uses the **Conventional Commits** format: ```
:
[optional body] ``` ### Types | Type | Usage | |------|-------| | `feat:` | New feature | | `fix:` | Bug fix | | `docs:` | Documentation changes | | `chore:` | Build, tooling, or dependency updates | | `refactor:` | Code refactoring (no feature/bug change) | | `test:` | Adding or updating tests | | `style:` | Formatting, whitespace (no logic changes) | ### Examples ``` feat: add order bump preview to step editor fix: checkout fields not saving on mobile layout docs: update REST API reference for flows endpoint chore: bump @wordpress/scripts to 19.2.2 refactor: extract checkout field renderer to separate class ``` --- ## Pre-commit Hook Running `npm install` installs a git pre-commit hook. It runs before each commit to catch violations early. **Do not** bypass with `--no-verify` unless explicitly approved by the team. --- ## File Header Standards Every PHP file must start with: ```php