Sélectionner une page
WooCommerce – Exclure un code postal particulier des moyens de paiement

WooCommerce – Exclure un code postal particulier des moyens de paiement

par | 7 Déc 2020 | Blog, Snippet, WordPress

Hello le web,

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.

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.

Pour s’assurer que l’on ne puisse pas passer commande à destination de la corse.

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;
}

C’est déjà fini.

Share This