add_action( 'woocommerce_after_checkout_validation', function( $data ) {
// Get Submitted Fields
$address_1 = isset( $data['shipping_address_1'] )
? $data['shipping_address_1'] : $data['billing_address_1'];
$address_2 = isset( $data['shipping_address_2'] )
? $data['shipping_address_2'] : $data['billing_address_2'];
$postcode = isset( $data['shipping_postcode'] )
? $data['shipping_postcode'] : $data['billing_postcode'];
// Trim To Letters Only
$address_1 = preg_replace( '/[^a-z]/', '', strtolower( $address_1 ) );
$address_2 = preg_replace( '/[^a-z]/', '', strtolower( $address_2 ) );
$postcode = preg_replace( '/[^a-z]/', '', strtolower( $postcode ) );
// Show Error
foreach( [ 'pobox', 'postbox', 'postal', 'postoffice' ] as $test ) {
if( strstr( $address_1 . $address_2 . $postcode, $test ) ) {
wc_add_notice( 'Sorry, we cannot ship to a PO BOX address.', 'error' );
return;
}
}
} );
Prevent post office box deliveries
Produces an error on checkout if customer enters a PO box into address line 1, line 2, or postcode.
How to use
- Log into a staging, development, or locally hosted clone of your site
- Install and activate Code Snippets
- WP Admin > Snippets > Add New
- Copy and paste the code from the Description tab above
- Check to ensure formatting came over properly and no syntax errors show up in the editor
- Customize the code as desired
- Add a meaningful title
- Select whether to run on front-end or back-end (or both)
- Click “Save and Activate”
- Test your site to ensure it works
- Disable if any problems, or recover
- Repeat for live environment
License
All code snippets are licensed GPLv2 (or later) matching WordPress licensing.
Disclaimer of warranty:
Except when otherwise stated in writing the copyright holders and/or other parties provide the program as-is without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.
Support
- Describe the issue and what you’ve observed.
- Describe your expected outcome(s).
- List steps to reproduce the issue.
- Optionally provide screen-shot or video URLs.
