WP Manifestindependent plugin directory
manifest / ecommerce / woocommerce_field_remover_plugin

WooCommerce Checkout Simplifier

A lightweight and efficient WordPress plugin that removes unnecessary checkout fields from your WooCommerce store

by Nikolay Djemerenov · github.com/nikdjem/woocommerce_field_remover_plugin · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/nikdjem/woocommerce_field_remover_plugin/archive/refs/heads/main.zip

A PHP-only WooCommerce plugin that configures native checkout field visibility for Company, Address Line 2, and Phone using WooCommerce's supported global field options.

Current version: 2.0.0

Repository: github.com/nikdjem/woocommerce_field_remover_plugin

Overview

WooCommerce Checkout Simplifier applies sensible first-run defaults for three optional checkout fields and then gets out of the way. It does not manipulate checkout markup, does not use JavaScript or React, and does not register runtime checkout filters.

On activation, the plugin writes WooCommerce's native visibility options only when they are not already stored. Existing merchant settings are preserved. Ongoing configuration remains under native WooCommerce controls.

Primary target: modern WooCommerce Block Checkout.

Supported Fields

Field WooCommerce option Default
Company woocommerce_checkout_company_field hidden
Address Line 2 woocommerce_checkout_address_2_field optional
Phone woocommerce_checkout_phone_field optional

Allowed values for each option:

  • required
  • optional
  • hidden

Native Option Model

The plugin writes directly to WooCommerce option keys. It does not introduce duplicate custom storage.

Option Purpose
woocommerce_checkout_company_field Company field visibility
woocommerce_checkout_address_2_field Address Line 2 visibility
woocommerce_checkout_phone_field Phone field visibility

Behavior:

  1. Activation only — defaults are applied when an option is not already stored.
  2. Preserve existing settings — merchant or WooCommerce migration values are never overwritten on activation.
  3. No runtime enforcement — the plugin does not force values on every request.

Merchant Control

The plugin does not provide a custom settings page.

Merchants configure these fields through native WooCommerce settings and Checkout Block field controls. WooCommerce remains the source of truth after activation.

Supported / Protected Fields

Version 2.0.0 intentionally does not configure:

  • Country
  • Address Line 1
  • City
  • State
  • Postcode
  • First Name
  • Last Name
  • Email

This avoids interfering with core checkout address and order data. Unlike the legacy Field Remover (1.x), v2 does not remove State or Shipping State.

Requirements

  • WordPress 6.0 or higher
  • WooCommerce 9.6 or higher (native field visibility model)
  • PHP 7.4 or higher

Installation

Manual Installation

  1. Download or clone the plugin repository.
  2. Place the woocommerce_field_remover_plugin folder in /wp-content/plugins/.
  3. Activate WooCommerce Checkout Simplifier from the Plugins screen.
  4. Ensure WooCommerce is installed and active.

On first activation, default visibility values are written only for options that are not already stored.

Compatibility

Surface Notes
Block Checkout Primary target; functionally verified locally
Shortcode checkout Shares the same native global options (WooCommerce 11.0.1 source architecture)
Store API Shares the same native global options
My Account Shares the same native global options

Architecture is shared across these WooCommerce surfaces; this project was functionally verified against Block Checkout.

Verified locally with WordPress 7.1 and WooCommerce 11.0.1.

Do not assume universal compatibility with every WooCommerce version, theme, or checkout configuration.

Testing

Local functional verification (Phase 09.6E.2D):

Check Result
Plugin activation Pass
Existing option preservation on activation Pass
Block Checkout rendering Pass
Company hidden when configured hidden Pass
Address Line 2 optional when configured optional Pass
Phone required when configured required Pass
Protected fields untouched (State remains present) Pass
No runtime force override by plugin Pass
No PHP errors observed Pass

Environment: vibe-shoplocal.local — WordPress 7.1, WooCommerce 11.0.1, Block Checkout, theme: vibe-store.

Known test limitation: Merchant override persistence could not be isolated under a clean standard theme on the available Local setup. The active vibe-store theme forces woocommerce_checkout_company_field = hidden and woocommerce_checkout_phone_field = required on every init. That behavior is external to this plugin and is not a plugin failure. Plugin source review confirms update_option() is used only inside the activation flow.

Evolution: From Field Remover to Checkout Simplifier

1. Legacy implementation

The original plugin (1.x — WooCommerce Field Remover) used the woocommerce_checkout_fields filter to remove:

  • billing_state
  • billing_phone
  • shipping_state

2. Initialization issue

During maintenance/refactoring, the initialization flow was changed so the constructor no longer called init(), but the bootstrap function did not invoke init() either.

This caused the checkout filter to remain unregistered. The issue was identified through source and hook analysis and corrected in the 1.0.x line.

3. Block Checkout compatibility discovery

The corrected legacy implementation was tested against the modern WooCommerce Block Checkout. The legacy woocommerce_checkout_fields approach did not remove the visible Block Checkout fields for the targeted use case.

This led to a compatibility review.

4. Modern WooCommerce architecture

WooCommerce provides native global visibility options for Company, Address Line 2, and Phone (required, optional, hidden). These options are consumed by Block Checkout, shortcode checkout, Store API, and related surfaces in WooCommerce 9.6+.

The plugin was redesigned to use those supported options instead of legacy checkout field manipulation.

5. Version 2.0.0

Version 2.0.0 is a product and architecture redesign, not a minor bug fix. The plugin was renamed internally to WooCommerce Checkout Simplifier, scope was narrowed to the three supported fields above, and legacy state/phone/shipping-state removal was removed.

Technical Details

  • Architecture: Minimal procedural bootstrap; activation hook only for defaults.
  • Security: ABSPATH guard, WooCommerce dependency check on activation, capability-checked admin notice when WooCommerce is missing.
  • Internationalization: Text domain wc-checkout-simplifier.
  • No runtime checkout hooks in v2.0.0.

Contributing

Contributions are welcome. For significant changes, open an issue first.

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push and open a Pull Request

License

GPL v2 or later — see LICENSE or https://www.gnu.org/licenses/gpl-2.0.html.

Author

Nikolay Djemerenov

Support

For issues or questions, open an issue on GitHub with environment details (WordPress version, WooCommerce version, checkout type, active theme).