WooCommerce – Exclure un code postal particulier des moyens de paiement

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.

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 ?