Do not allow PO BOX address to be used on shipping for Woocommerce

I had a task from a client to make a script not to allow shipping to PO BOX address from Woocommerce.

This can be done by using and adding the following code on functions.php on the theme folder. I recommend using always a child theme if you do regular updates to the theme:

add_action('woocommerce_after_checkout_validation', 'deny_pobox_postcode_function');

function deny_pobox_postcode_function( $posted ) {
    global $woocommerce;

    $address  = ( isset( $posted['shipping_address_1'] ) ) ? $posted['shipping_address_1'] : $posted['billing_address_1'];
    $postcode = ( isset( $posted['shipping_postcode'] ) ) ? $posted['shipping_postcode'] : $posted['billing_postcode'];

    $replace  = array(" ", ".", ",");
    $address  = strtolower( str_replace( $replace, '', $address ) );
    $postcode = strtolower( str_replace( $replace, '', $postcode ) );

    if ( strstr( $address, 'pobox' ) || strstr( $postcode, 'pobox' ) || strstr( $address, 'p.o. box' ) || strstr( $address, 'po box' ) || strstr( $address, 'po. box' ) ) {
        wc_add_notice( sprintf( __( "We cannot ship to PO BOX addresses.") ) ,'error' );
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *