This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Maje WooCommerce No PO Boxes


Developer Note: This plugin will soon require PHP 5.6 or greater to be in place.

Please contact us at or go to and use our live chat feature if you’d like our help updating your site to use more modern software.

Restricts the WooCommerce checkout form for allowing PO Boxes for shipping addresses.

  • If same billing/shipping address the customer cannot complete checkout with a PO Box as a billing/shipping address.
  • If the customer is shipping to a different physical address they cannot use a PO Box as a shipping address, but can use it as a billing address.
  • Does not restrict the use of PO Boxes on Digital/Virtual only carts.
  • Requires that WooCommerce shipping is enabled.
  • Requires that WooCommerce has a shipping method setup (can be free shipping only).

Usage and extending examples

Github project


  • When shipping to a different address only the shipping side is reviewed
  • When shipping to the same billing address the billing address fields are reviewed
  • Settings page with configurable messaging (no html markup allowed)


  1. Have WooCommerce installed and activated
  2. Enable shipping
  3. Add this plugin or upload the .zip file (downloaded from here)
  4. Activate plugin


Installation Instructions
  1. Have WooCommerce installed and activated
  2. Enable shipping
  3. Add this plugin or upload the .zip file (downloaded from here)
  4. Activate plugin


Works Perfect!

I have been searching the web for this. Everywhere I looked there was an assortment of confusing options for how to add something like this. Most involved copying and pasting code into your functions.php. Finding this plugin just made my day.
Read all 3 reviews

Contributors & Developers

“Maje WooCommerce No PO Boxes” is open source software. The following people have contributed to this plugin.




  • Fix: Used the wrong function for translation


  • Fix: Accidentally used a PHP7.0 only argument. Fixed to allow for php 5.3+
  • Fix: Settings page was throwing notices when new, unsaved shipping methods were displayed


  • New: Restrict by Shipping Method per Shipping Zone
  • New: Filter: mwnpb_restrict_shipping_method
  • New: Filter: mwnpb_allow_pobox
  • Bug Fix: Verifying that the returned variable type in the ‘mmwc_restricted_words’ filter is an array otherwise resetting to default set of words
  • Update: Plugin Name to “WooCommerce: No PO Boxes” from “Maje WooCommerce No PO Boxes” for WC extension conformity.
  • Update: Actually setting tested against WordPress 4.9
  • Maintenance: Complete codebase refactor to make future updates less time intensive
  • Meta: Added Requires PHP 5.6 header to plugin main file and readme
  • Meta: Readme information to claim 5.6 required. Not yet required. Just setting the stage


  • Tested against WordPress 4.9
  • tested against WooCommerce 3.2.3
  • Added the following words to the deny list: PO. Box, PO.Box, P.O Box, P.O


  • Forgot to update version in main php file… fixing to allow for updates in sites using


  • Fix: Plugin now puts all restricted strings to lowercase instead of assuming they are
  • Tested to WordPress version 4.8.2
  • Added WooCommerce version check strings to main php file


  • Fix: Plugin options getting deleted upon plugin deactivation
  • Updated: Plugin options are deleted upon uninstall
  • Updated: Added link to documentation on settings page
  • Updated: Default functionality status: On (previously disabled upon installation)
  • Tested to WordPress version 4.8.1


  • Tested to WordPress version 4.8


  • Tested to WordPress version 4.7.1


  • Tested to WordPress version 4.7


  • Tested to WordPress version 4.6.1


  • Updated tested to WordPress version.


  • Updated for WordPress 4.5 Compatibility


  • Added instruction text for cases where WooCommerce shipping is not enabled


  • Changed to using plain text text domain instead of class constant


  • Added filter mmwc_restricted_message
  • Added filter mmwc_restricted_words


  • Added the ability to turn on and off the restriction (off by default)
  • Added Settings link to the Plugin listing page


  • Updated documentation


  • Created plugin