Skip to content

awesomemotive/wpforms-phpcs

Repository files navigation

WPForms Coding Standards

Maintainers: The WPForms team

License: GPLv2 any later version.
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Description

WPForms coding standards are based on the WordPress Coding Standards and the PHPCompatibility Coding Standards and help create strict and high-quality code.

Installation

composer config repositories.repo-name vcs https://github.com/awesomemotive/wpforms-phpcs.git
composer require awesomemotive/wpforms-phpcs --dev

Configuration

Create the .phpcs.xml or phpcs.xml file at the root of your project:

<?xml version="1.0"?>
<ruleset name="WPForms CS">
	<description>The WPForms coding standard.</description>

	<exclude-pattern>\vendor/*</exclude-pattern>
	<exclude-pattern>\.github/*</exclude-pattern>

	<config name="testVersion" value="5.6-"/>
	<config name="multi_domains" value="true"/>
	<config name="minimum_supported_wp_version" value="5.2"/>

	<rule ref="WPForms"/>

	<rule ref="WPForms.PHP.ValidateDomain">
		<properties>
			<property name="wpforms-lite" value="wpforms"/>
			<property name="wpforms" value="wpforms/pro/,wpforms/src/Pro/"/>
		</properties>
	</rule>
</ruleset>

Sniffs detail

Validate Text Domain Sniff

The WPForms.PHP.ValidateDomain sniff validates that you are using the correct text domain for i18n functions such as __(), _e(), _n(), etc.

By default, this sniff works for one domain in the project. We get a directory name based on the vendor directory or the location of the phpcs.xml/.phpcs.xml file.

You can install our package to the plugins directory and enable the multi-domain mode. in this case, the text domain will be the next folder name in the path. Structure:

../wp-content/plugins/          # → Root
├── wpforms/                    # → `wpforms` domain.
└── wpforms-stripe/             # → `wpforms-stripe` domain.

In your config you should enable the multi_domains property:

<?xml version="1.0"?>
<ruleset name="WPForms CS">
	<!-- ... -->
	<config name="multi_domains" value="true"/>
	<!-- ... -->
</ruleset>

If you have different domains for directories inside your project (for example, for free and paid versions) and want to redefine the text domain for some paths:

../wp-content/plugins/          # → Root
├── wpforms/                    # → `wpforms-lite` domain.
│   ├── pro/                    # → `wpforms` domain.
│   └── src/                    # → `wpforms-lite` domain.
│       ├── Admin/              # → `wpforms-lite` domain.
│       └── Pro/                # → `wpforms` domain.
└── wpforms-stripe/             # → `wpforms-stripe` domain.

In this case, you should add to the config file the property with name as a text domain and value as a path. If a domain has several paths, then list them via commas.

<?xml version="1.0"?>
<ruleset name="WPForms CS">
	<!-- ... -->
	<config name="multi_domains" value="true"/>
	<rule ref="WPForms.PHP.ValidateDomain">
		<properties>
			<property name="wpforms-lite" value="wpforms"/>
			<property name="wpforms" value="wpforms/pro/,wpforms/src/Pro/"/>
		</properties>
	</rule>
	<!-- ... -->
</ruleset>