PHPackages                             netzstrategen/shop-standards - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. netzstrategen/shop-standards

ActiveWordpress-plugin[Utility &amp; Helpers](/categories/utility)

netzstrategen/shop-standards
============================

102[3 PRs](https://github.com/netzstrategen/wordpress-shop-standards/pulls)PHP

Since Mar 4Pushed 1mo ago13 watchersCompare

[ Source](https://github.com/netzstrategen/wordpress-shop-standards)[ Packagist](https://packagist.org/packages/netzstrategen/shop-standards)[ RSS](/packages/netzstrategen-shop-standards/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (17)Used By (0)

Shop Standards plugin
=====================

[](#shop-standards-plugin)

This plugin adds what we consider standard refinements for e-commerce websites. These refinements include diverse customizations to WooCommerce and related plugins, like WooCommerce German Market.

Configuration settings
----------------------

[](#configuration-settings)

The plugin adds several configuration settings in two main points of the backend admin:

- [Custom tab in WooCommerce configuration page](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L15).
- Products options ([simple products](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L226), [products variations](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L473)).

Shop customizations
-------------------

[](#shop-customizations)

The customizations applied by `shop-standards` affect diverse aspects of the way the shop works: products prices, products stocks, products delivery time, products listing filtering, SEO, performance, WP-CLI commands...

WooCommerce customizations
--------------------------

[](#woocommerce-customizations)

These customizations include:

- [General products management and display](#general-products-management-and-display).
- [Products prices management and display](#products-prices)
- [Products sale label and category](#products-sale-label-and-category)
- [Products stocks management and display](#products-stocks)
- [Products delivery time management and display](#products-delivery-time)
- [Filtering products by delivery time](#filtering-products-by-delivery-time)
- [Plus Products category](plus-products-category)
- [Cart and checkout](#cart-and-checkout)

### General products management and display

[](#general-products-management-and-display)

- [Set number of products displayed on listing pages](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L188).
- [Minimum amount of product variations to trigger the AJAX retrieval of data](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L133).
- [Enable revisions for products descriptions](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L85).
- [Hide "Add to cart" button for products not to be sold online](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L195).
- [Hide product sale label](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L214). This is controlled by a backend [configuration setting](#configuration-settings).

#### Product backend custom fields

[](#product-backend-custom-fields)

The plugin adds several backend custom fields to both simple products([\#1](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerce.php#L226), [\#2](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerce.php#L297), [\#3](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerce.php#L313)) and variable products([\#1](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerce.php#L473), [\#2](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerce.php#L535)).

Custom fields added to products are:

- Simple products
    - Back in stock date
    - GTIN
    - ERP/Inventory ID
    - Display sale price as normal price (checkbox)
    - Product notes
    - Custom price label
    - Hide sale percentage bubble (checkbox)
    - Hide add to cart button (checkbox)
    - Variation has insufficient images (checkbox, only product variations)
    - Purchasing Price
    - Price comparison focus product

### Products prices

[](#products-prices)

Customizations in the way the product prices are managed and displayed include:

- [Strike out regular prices range of variable products on sale](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L39).
- [Remove prefix "From" in variable products price ranges added by plugin B2B Market](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L75).
- [Display sale price as regular price](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L605). This is controlled by a backend [configuration setting](#configuration-settings).

### Products sale label and category

[](#products-sale-label-and-category)

Products on sale can be automatically assigned a custom category. This is implemented in class [WooCommerceSaleLabel](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerceSaleLabel.php#L13).

### Products stocks

[](#products-stocks)

- [Display product status messages regarding availability](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L138).

### Products delivery time management and display

[](#products-delivery-time-management-and-display)

- [Update variable product delivery time with the lowest delivery time among its own variations](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/Admin.php#L77). The update is triggered [when the product is saved](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/Plugin.php#L92) or [manually using a WP-CLI custom command](#wp-cli-custom-commands).

This feature relies on a very specific way to setup the delivery time values. Those need to be defined as terms of taxonomy `product_delivery_times`.

The slug of each term in the taxonomy has to be a numeric value, so that the code is able to compare all values and select the lowest one. The recommended way is to set the slug of each term to the value in days of the corresponding delivery time. If the delivery time is a range, we pick the highest time.

E.g.

- ca. 2-3 Wochen =&gt; 21
- ca. 5-6 Wochen =&gt; 40
- ca. 3-4 Werktage =&gt; 4
- 48 stunden =&gt; 2

### Filtering products by delivery time

[](#filtering-products-by-delivery-time)

This plugin adds a widget to filter products by their delivery time. This is achieved overriding layered nav WooCommerce widgets with new ones supporting WooCommerce German Market delivery time taxonomy terms ([see previous point](products-delivery-time-management-and-display)) to be used as product filters.

The whole implementation is contained in folder [src/ProductFilters](https://github.com/netzstrategen/wordpress-shop-standards/tree/master/src/ProductFilters), entry point being class [DeliveryTime](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/ProductFilters/DeliveryTime.php).

The time delivery product filter widget can be used in any products listing page, as any other WooCommerce (so called) layered navigation widget.

### Cart and checkout

[](#cart-and-checkout)

- [Add salutation custom field for billing and shipping](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerceSalutation.php#L54). This is controlled by a backend [configuration setting](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerceSalutation.php#L33).
- [Add a confirmation email custom field on the checkout page](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerceCheckout.php#L66).This is controlled by a backend [configuration setting](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerceCheckout.php#L38).
- [Add basic information (e.g. weight, sku, etc.) and product attributes to cart item data](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerce.php#L673).

### Order emails

[](#order-emails)

- [Add basic information (e.g. weight, sku, etc.) and product attributes to order emails](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerce.php#L725).

Performance improvements
------------------------

[](#performance-improvements)

Performance improvements are mainly implemented in class [Performance](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/Performance.php). Those cover:

- [Preloading of main product image](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L410).
- Asynchronous loading of [styles](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/Performance.php#L84) and [scripts](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/Performance.php#L124).
- [DNS prefetching for resources](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/Performance.php#L147).
- [Prevent loading of unwanted assets](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/Performance.php#L59).

Customizations on third party plugins
-------------------------------------

[](#customizations-on-third-party-plugins)

### WooCommerce German Market

[](#woocommerce-german-market)

- [Remove SKU from order item name](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerce.php#L778).
- [Fix delivery time is not displayed for variable products](https://github.com/netzstrategen/wordpress-shop-standards/blob/a15cb7d86afc6a7808cee6e9177a0c2c604e6119/src/WooCommerce.php#L969).

### B2B Market

[](#b2b-market)

- [Remove prefix "From" in variable products price ranges added by plugin B2B Market](https://github.com/netzstrategen/wordpress-shop-standards/blob/master/src/WooCommerce.php#L75).

WP-CLI custom commands
----------------------

[](#wp-cli-custom-commands)

Plugin `shop-standards` provide a custom WP-CLI command to update the delivery time of variable products. This command ensures the delivery time assigned to variable products is the lowest among its variations.

Although this update is triggered whenever the variable products are edited and saved, this offers a convenient way to update a given variable product (by ID), a list of them (comma separated list of IDs) or all of them.

**Update delivery time for a single product:**

`wp shop-standards refreshDeliveryTime 2165`

**Update delivery time for a list of products:**

`wp shop-standards refreshDeliveryTime 2165, 2166, 2167`

**Update delivery time for all products:**

`wp shop-standards refreshDeliveryTime --all`

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance59

Moderate activity, may be stable

Popularity3

Limited adoption so far

Community23

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor4

4 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/711ae4c6505ae181f347e152ec84eabe01ca18befbfa82410289614a4bbffa9a?d=identicon)[murrego7](/maintainers/murrego7)

---

Top Contributors

[![LucaPipolo](https://avatars.githubusercontent.com/u/2393718?v=4)](https://github.com/LucaPipolo "LucaPipolo (31 commits)")[![creative-andrew](https://avatars.githubusercontent.com/u/18492002?v=4)](https://github.com/creative-andrew "creative-andrew (30 commits)")[![sun](https://avatars.githubusercontent.com/u/41992?v=4)](https://github.com/sun "sun (18 commits)")[![fabianmarz](https://avatars.githubusercontent.com/u/863823?v=4)](https://github.com/fabianmarz "fabianmarz (15 commits)")[![bogdanarizancu](https://avatars.githubusercontent.com/u/11241985?v=4)](https://github.com/bogdanarizancu "bogdanarizancu (14 commits)")[![juanlopez4691](https://avatars.githubusercontent.com/u/13467494?v=4)](https://github.com/juanlopez4691 "juanlopez4691 (13 commits)")[![colourgarden](https://avatars.githubusercontent.com/u/793191?v=4)](https://github.com/colourgarden "colourgarden (9 commits)")[![chrisbaltazar](https://avatars.githubusercontent.com/u/8417691?v=4)](https://github.com/chrisbaltazar "chrisbaltazar (8 commits)")[![moritzbappert](https://avatars.githubusercontent.com/u/6773669?v=4)](https://github.com/moritzbappert "moritzbappert (6 commits)")[![danielistrate27](https://avatars.githubusercontent.com/u/109590928?v=4)](https://github.com/danielistrate27 "danielistrate27 (3 commits)")[![wrux](https://avatars.githubusercontent.com/u/1453384?v=4)](https://github.com/wrux "wrux (2 commits)")[![alinistrate](https://avatars.githubusercontent.com/u/5039313?v=4)](https://github.com/alinistrate "alinistrate (2 commits)")[![navidabdi](https://avatars.githubusercontent.com/u/32398454?v=4)](https://github.com/navidabdi "navidabdi (2 commits)")[![rodrigoaguilera](https://avatars.githubusercontent.com/u/655187?v=4)](https://github.com/rodrigoaguilera "rodrigoaguilera (2 commits)")[![adabaca](https://avatars.githubusercontent.com/u/109589740?v=4)](https://github.com/adabaca "adabaca (2 commits)")[![gyopiazza](https://avatars.githubusercontent.com/u/748898?v=4)](https://github.com/gyopiazza "gyopiazza (1 commits)")[![evemf](https://avatars.githubusercontent.com/u/12427997?v=4)](https://github.com/evemf "evemf (1 commits)")[![CedSchlosser](https://avatars.githubusercontent.com/u/71001745?v=4)](https://github.com/CedSchlosser "CedSchlosser (1 commits)")

---

Tags

mysqlphpwoocommercewoocommerce-pluginwordpress

### Embed Badge

![Health badge](/badges/netzstrategen-shop-standards/health.svg)

```
[![Health](https://phpackages.com/badges/netzstrategen-shop-standards/health.svg)](https://phpackages.com/packages/netzstrategen-shop-standards)
```

###  Alternatives

[prooph/event-sourcing

PHP EventSourcing library

267808.5k18](/packages/prooph-event-sourcing)[sybio/gif-frame-extractor

PHP class that separates all the frames (and their duration) of an animated GIF

179417.2k8](/packages/sybio-gif-frame-extractor)[dreamonkey/laravel-cloudfront-url-signer

Laravel 5.6+ wrapper around CloudFront canned signed URLs

54750.7k](/packages/dreamonkey-laravel-cloudfront-url-signer)[judev/php-htmltruncator

HTML Truncation library, ported from the html\_truncator rubygem

26286.5k6](/packages/judev-php-htmltruncator)[paulzi/yii2-sortable

Sortable Behavior for Yii2

15310.5k4](/packages/paulzi-yii2-sortable)[causal/extractor

This extension detects and extracts metadata (EXIF / IPTC / XMP / ...) from potentially thousand different file types (such as MS Word/Powerpoint/Excel documents, PDF and images) and bring them automatically and natively to TYPO3 when uploading assets. Works with built-in PHP functions but takes advantage of Apache Tika and other external tools for enhanced metadata extraction.

16244.5k](/packages/causal-extractor)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
