Skip to content

Instantly share code, notes, and snippets.

@mikejolley
Last active January 15, 2018 19:58
Show Gist options
  • Save mikejolley/2282666 to your computer and use it in GitHub Desktop.
Save mikejolley/2282666 to your computer and use it in GitHub Desktop.
WooCommerce - Don't allow PO BOX within postcode, address 1 or address 2 fields.
add_action('woocommerce_after_checkout_validation', 'deny_pobox_postcode');
function deny_pobox_postcode( $posted ) {
global $woocommerce;
// Put postcode, address 1 and address 2 into an array
$check_address = array();
$check_address[] = isset( $posted['shipping_postcode'] ) ? $posted['shipping_postcode'] : $posted['billing_postcode'];
$check_address[] = isset( $posted['shipping_address_1'] ) ? $posted['shipping_address_1'] : $posted['billing_address_1'];
$check_address[] = isset( $posted['shipping_address_2'] ) ? $posted['shipping_address_2'] : $posted['billing_address_2'];
// Implode address, make lowercase, and remove spaces and full stops
$check_address = strtolower( str_replace( array( ' ', '.' ), '', implode( '-', $check_address ) ) );
if ( strstr( $check_address, 'pobox' ) ) {
$woocommerce->add_error( "Sorry, we don't ship to PO BOX addresses." );
}
}
@IFBDesign
Copy link

Mike,

Is there a way to use this code to where the message pops up only when they try to use a certain shipping method? For example the UPS method. I want to deny shipping to PO Box Addresses based on the shipping method UPS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment