Wocommerce boites postales

Malheureusement, nous ne livrons pas les boîtes postales, pour des raisons de sécurité. ET VOUS ?
Si vous souhaitez que votre boutique WooCommerce ne livre pas les boîtes postales, voici un exemple de code que vous pouvez insérer dans votre fichier functions.php.

Trouvez les clés de vos pays d'expéditions

Exemple d'adresse d'une boîte postale :

France

COVERT HARRY
25 RUE DES FLEURS
BP 40122
33506 LIBOURNE CEDEX

(dans cet exemple la clé est BP ou CEDEX)

BP en adresse 2 et CEDEX en code postal.

États Unis

COVERT HARRY
1407 Graymalkin Lane
PO Box 42
Salem Center, New York 10560

ou

COVERT HARRY
PO Box 42
1407 Graymalkin Lane
Salem Center, New York 10560

ou

COVERT HARRY
POB 42
1407 Graymalkin Lane
Salem Center, New York 10560

(dans cet exemple la clé est POB ou Box en adresse 1 ou adresse 2)

Canada

COVERT HARRY
CP 4001 SUCC A
VICTORIA BC V8X 3X4

ou

COVERT HARRY
1425 RUE JAMES
CP 4001 SUCC A
VICTORIA BC V8X 3X4
(dans cet exemple la clé est CP en adresse 1 ou adresse 2)

Suisse

COVERT HARRY
Case postale
3000 Berne 8

(dans cet exemple la clé est Case en adresse 1)

Insérez vos clés dans le code

Vous pouvez insérer ces clés dans :

Adresse 1 et/ou Adresse 2 et/ou Code postal

Attention : Afin d'éviter un rejet non voulu, ne pas mettre PO, par exemple.

Une adresse de livraison comme 01450 Poncin sera refusée (01450 POncin)

Exemple

/********************************************************************************************
	Don’t allow PO BOX shipping - BOITES POSTALES (FR) - PO BOX (USA) - CASES POSTALES (CA)
*********************************************************************************************/

add_action('woocommerce_after_checkout_validation', 'deny_pobox_postcode');

function deny_pobox_postcode( $posted ) {
  global $woocommerce;
  
  $address  = ( isset( $posted['shipping_address_1'] ) ) ? $posted['shipping_address_1'] : $posted['billing_address_1'];
  $address2  = ( isset( $posted['shipping_address_2'] ) ) ? $posted['shipping_address_2'] : $posted['billing_address_2'];
  $postcode = ( isset( $posted['shipping_postcode'] ) ) ? $posted['shipping_postcode'] : $posted['billing_postcode'];
  
  $replace  = array(" ", ".", ",");
  $address  = strtolower( str_replace( $replace, '', $address ) );
  $address2  = strtolower( str_replace( $replace, '', $address2 ) );
  $postcode = strtolower( str_replace( $replace, '', $postcode ) );

  if ( strstr( $address, 'pobox' ) || strstr( $postcode, 'pobox' )
  || strstr( $address, 'box' ) || strstr( $postcode, 'box' ) || strstr( $address2, 'box' )
  || strstr( $address, 'pob' ) || strstr( $postcode, 'pob' ) || strstr( $address2, 'pob' )
  || strstr( $address, 'cp' ) || strstr( $address2, 'cp' )
  || strstr( $address, 'bp' ) || strstr( $address2, 'bp' ) ) {
    WC_add_notice( __( 'Sorry, we don\'t ship to PO BOX addresses.', 'textdomain' ), 'error' );
  }
}
Don't allow PO Box shipping addresses

C'est tout ! ...pour le moment (Harris Covert).