WooCommerce – Exclure un code postal particulier des moyens de paiement

Blog · Snippet · WordPress

Publié le :
Mis à jour le :

Exclure un code postal particulier des moyens de paiement

Aujourd’hui on résout une problématique sur notre site WooCommerce par le code.

On souhaite vendre uniquement en France métropolitaine en excluant la Corse et les DOM-TOM.

Configurer correctement la zone de vente dans les réglages de WooCommerce

Pour les DOM/TOM, ça se passe dans les réglages de Woocommerce.

  • Woocommerce > Réglages > Général :
    • Où vendre => Vendre dans certains pays
    • Vendre dans certains pays => France

La région France exclue de base les DOM/TOM sauf la Corse.

Ajouter un snippet pour les exclusions particulières

Pour s’assurer que l’on ne puisse pas passer commande à destination de la Corse, ajoutez le code suivant dans le fichier functions.php de votre thème enfant ou en utilisant le plugin gratuit Code Snippets.

add_filter( 'woocommerce_available_payment_gateways', 'agent3w_valid_payment_gateways' );
function agent3w_valid_payment_gateways( $available_gateways ) {

    global $woocommerce;
    
    if ( is_admin() ) {
        return $available_gateways; // autorise tous les moyens de paiement pour les admins
    }

    // Exclure des codes postaux précis
    $exclude_postcodes = array();
    // Exclure des codes postaux commençant par
    $exclude_postzones = array(
        '20', // corse
        '2A',
        '2B'
    );

    $user_postcode = !empty($woocommerce->customer->get_shipping_postcode()) ? $woocommerce->customer->get_shipping_postcode() : $woocommerce->customer->get_billing_postcode();

    // retire les moyens de paiement si le code postal est dans la liste des exclusions
    if ( in_array($user_postcode, $exclude_postcodes)) {
       return array();
    }

    // retire les moyens de paiement si le code postal commence par un code exclu
    foreach ( $exclude_postzones as $codezone) {
        if (preg_match('/^' . $codezone . '/', $user_postcode)) {
            return array();
            break;
        }
    }

    return $available_gateways;
}

Et voilà c’est déjà fini 🙂

2 réflexions au sujet de “WooCommerce – Exclure un code postal particulier des moyens de paiement”

Laisser un commentaire

Et vous ! Quel est votre projet ?

Se faire connaître sur le web ? Vendre ses services ou produits en ligne ? Gérer son agenda de réservations ? Diffuser ses créations ? Améliorer son site internet ?