migrating a batch of contribution-related docs from the wiki (#40764)
* migrating a batch of contribution-related docs from the wiki * Delete deprecation-in-core.md * liniting
This commit is contained in:
parent
9028178d95
commit
1570d26ec4
|
@ -0,0 +1,40 @@
|
|||
# CSS SASS coding guidelines and naming convetions
|
||||
|
||||
Our guidelines are based on those used in [Calypso](https://github.com/Automattic/wp-calypso) which itself follows the BEM methodology. Refer to [this doc](https://wpcalypso.wordpress.com/devdocs/docs/coding-guidelines/css.md?term=css) for full details. There are a few differences in WooCommerce however which are outlined below;
|
||||
|
||||
## Prefixing
|
||||
|
||||
As a WordPress plugin WooCommerce has to play nicely with WordPress core and other plugins / themes. To minimise conflict potential all classes should be prefixed with `.woocommerce-`.
|
||||
|
||||
## Class names
|
||||
|
||||
Calypso is built in React and uses component names to formulate CSS class names. WooCommerce Core has none of these components so uses a more traditional [BEM](http://getbem.com/) approach to [naming classes](http://cssguidelin.es/#bem-like-naming).
|
||||
|
||||
When adding classes just remember;
|
||||
|
||||
* **Block** - Standalone entity that is meaningful on its own.
|
||||
* **Element** - Parts of a block and have no standalone meaning. They are semantically tied to its block.
|
||||
* **Modifier** - Flags on blocks or elements. Use them to change appearance or behaviour.
|
||||
|
||||
### Example
|
||||
|
||||
* `.woocommerce-loop {}` (block).
|
||||
* `.woocommerce-loop-product {}` (nested block).
|
||||
* `.woocommerce-loop-product--sale {}` (modifier).
|
||||
* `.woocommerce-loop-product__link {}` (element).
|
||||
* `.woocommerce-loop-product__title {}` (element).
|
||||
* `.woocommerce-loop-product__price {}` (element).
|
||||
* `.woocommerce-loop-product__rating {}` (element).
|
||||
* `.woocommerce-loop-product__button-add-to-cart {}` (element).
|
||||
* `.woocommerce-loop-product__button-add-to-cart--added {}` (modifier).
|
||||
|
||||
**Note:** `.woocommerce-loop-product` is not the chosen classname _because_ the block is nested within `.woocommerce-loop`. It's to be specific so that we can have separate classes for single products, cart products etc. _Nested blocks do not need to inherit their parents full name_.
|
||||
|
||||
You can read more about BEM key concepts [here](https://en.bem.info/methodology/key-concepts/).
|
||||
|
||||
#### TL;DR
|
||||
|
||||
* Follow the [WP Coding standards for CSS](https://make.wordpress.org/core/handbook/best-practices/coding-standards/css/) unless it contradicts anything here.
|
||||
* Follow [Calypso guidelines](https://wpcalypso.wordpress.com/devdocs/docs/coding-guidelines/css.md?term=css).
|
||||
* Use BEM for [class names](https://en.bem.info/methodology/naming-convention/).
|
||||
* Prefix all the things.
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
# Minification of SCSS and JS
|
||||
|
||||
## SCSS
|
||||
|
||||
When updating SCSS files in the WooCommerce project, please **commit only your changes to unminified SCSS files**. The minification will be handled as part of the release process.
|
||||
|
||||
To get the minified CSS files, run `pnpm -- turbo run build --filter='woocommerce-legacy-assets'` from the repository root directory. To set up the development environment from scratch, see the section on [how to install dependencies and generate assets](https://github.com/woocommerce/woocommerce/wiki/How-to-set-up-WooCommerce-development-environment#install-dependencies-and-generate-assets) in the guide to set up a WooCommerce development environment.
|
||||
|
||||
## Javascript
|
||||
|
||||
When changing the JS files, please **commit only unminified files** (i.e. the readable JS files). The minification will be handled as part of the release process.
|
||||
|
||||
To ensure you can test your changes, run with `SCRIPT_DEBUG` turned on, i.e. add `define( 'SCRIPT_DEBUG', true );` to your wp-config.php file.
|
|
@ -0,0 +1,46 @@
|
|||
# Naming Conventions
|
||||
|
||||
## PHP
|
||||
|
||||
WooCommerce core generally follows [WordPress PHP naming conventions](https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#naming-conventions). On top of that, function, class, and hook names should be prefixed. For functions the prefix is `wc_`, for classes is `WC_` and for hooks is `woocommerce_`.
|
||||
|
||||
Function name examples:
|
||||
|
||||
- `wc_get_product()`
|
||||
- `wc_is_active_theme()`
|
||||
|
||||
Class name examples:
|
||||
|
||||
- `WC_Breadcrumb`
|
||||
- `WC_Cart`
|
||||
|
||||
Hook name examples (actions or filters):
|
||||
|
||||
- `woocommerce_after_checkout_validation`
|
||||
- `woocommerce_get_formatted_order_total`
|
||||
|
||||
There are however some exceptions which apply to classes defined inside `src/`. Within this directory:
|
||||
|
||||
- We do not use the `WC_` prefix for class names (the prefix is not needed, because all of the classes in this location live within the `Automattic\WooCommerce` namespace)
|
||||
- Classes are named using the `CamelCase` convention (however, method names should still be `underscore_separated`)
|
||||
- Class files should match the class name and do not need the `class-` prefix (for example, the filename for the `StringUtil` class is `StringUtil.php`)
|
||||
|
||||
## JS
|
||||
|
||||
WooCommerce core follows [WordPress JS naming conventions](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/javascript/#naming-conventions). As with PHP, function, class, and hook names should be prefixed, but the convention for JS is slightly different, and camelCase is used instead of snake_case. For functions, the prefix is `wc`, for classes is `WC` and for hooks is `woocommerce`.
|
||||
|
||||
Function name example:
|
||||
|
||||
- `wcSettings()`
|
||||
|
||||
Class name example:
|
||||
|
||||
- `WCOrdersTable`
|
||||
|
||||
Hook name example (actions or filters):
|
||||
|
||||
- `woocommerceTracksEventProperties`
|
||||
|
||||
## CSS and SASS
|
||||
|
||||
See [CSS SASS coding guidelines and naming conventions](https://github.com/woocommerce/woocommerce/wiki/CSS-SASS-coding-guidelines-and-naming-conventions).
|
|
@ -0,0 +1,8 @@
|
|||
# String localization guidelines
|
||||
|
||||
1. Use `woocommerce` textdomain in all strings.
|
||||
2. When using dynamic strings in printf/sprintf, if you are replacing > 1 string use numbered args. e.g. `Test %s string %s.` would be `Test %1$s string %2$s.`
|
||||
3. Use sentence case. e.g. `Some Thing` should be `Some thing`.
|
||||
4. Avoid HTML. If needed, insert the HTML using sprintf.
|
||||
|
||||
For more information, see WP core document [i18n for WordPress Developers](https://codex.wordpress.org/I18n_for_WordPress_Developers).
|
Loading…
Reference in New Issue