Free · Open source · GPL-3.0

The block editor for WooCommerce products — without data loss

Gutenberg For WC Products enables the WordPress block editor for products and adds an extensible saver framework so third-party data persists when you hit Update. Its bundled adapter fixes WooCommerce variation saving.

Validated on WordPress 7.0 and WooCommerce 10.8.1.

The WordPress block editor editing a WooCommerce variable product. The Variations panel lists sizes XS, S, L and XL, with a notice that four variations have no prices.

The problem

What silently breaks in Gutenberg

When the block editor is enabled for products, pressing Update saves over REST. WooCommerce variation edits are lost unless you click the variations panel's own Save button first — a silent data loss WooCommerce has chosen not to fix (issue #35242). Any plugin whose save is tied to the classic form submit breaks too, because that event no longer exists.

The solution

One bridge, built as a framework

No data loss

Variation edits persist on Update. No extra clicks, no lost work.

Extensible by design

Any plugin registers its own saver through a public API. The WooCommerce variations fix is just the bundled reference adapter.

Stable foundations

Uses only WordPress APIs stable since 5.0. Validated on WordPress 7.0 and WooCommerce 10.8.1.

How it works

A bridge across the save cycle

  1. It listens to the Gutenberg save cycle

    The saving → saved transition is watched; autosaves are ignored.

  2. It runs the registered savers

    On each save, every registered saver acts only when its own rows are dirty.

  3. It re-triggers the plugin's native save

    The bundled adapter clicks WooCommerce's own Save variations button, firing WooCommerce's own AJAX with its nonce and capability checks. No fields serialized by hand, no new REST endpoints.

For developers

Built to be extended

Register your own saver through the public API on window.gfwcp. Declarative: when these rows are dirty, click this button.

Read the full developer documentation

register-saver.js
window.gfwcp.registerSaver( {
    id: 'my-plugin/my-panel',
    dirtySelector: '#my_panel .my-row.needs-update',
    buttonSelector: 'button.my-plugin-save'
} );

Requirements

Runs on long-stable APIs

  • WordPress 6.4+
  • PHP 7.4+
  • WooCommerce 7.0+ (required)

Only long-stable APIs, so it is not tied to a recent WordPress release.

Nonprofit program

Premium plugins, free for nonprofits

José donates his premium plugins — with lifetime support — to legally registered nonprofits, worldwide.

Free, open source, ready to use