Disabilitare uno o più metodi di pagamento in base alla zona di spedizione

Disabilitiamo due metodi di pagamento (Contrassegno e Postepay) per tutti i metodi di spedizione con id diverso da 1, che nel nostro caso è associato alla zona di spedizione Italia
Nel file functions.php del tema attivo aggiungiamo la funzione:

function filter_gateways( $gateways ) { 
$method = WC()->session->get( 'chosen_shipping_methods' ); 
// prendiamo l'ID del metodo di spedizione associato alla zona in cui vogliamo che i due metodi funzionino ancora 
// /wp-admin/admin.php?page=wc-settings&tab=shipping 
if ( 'flat_rate:1' != $method[0] ) { 
unset( $gateways['cod'] ); 
unset( $gateways['ppay'] ); 
} 
return $gateways; 
}

Sempre nel file functions.php aggiungiamo il filtro che richiama la funzione appena creata:

add_filter( 'woocommerce_available_payment_gateways', 'filter_gateways', 1);

4 commenti su “Disabilitare uno o più metodi di pagamento in base alla zona di spedizione

  1. Salve io avrei la necessità di disabilitare il pagamento con contrassegno e bonifico bancario quando spedisco in Europa, come posso fare? Esiste un plugin per fare questo senza mettere mani al codice? Grazie

  2. Non so se esistano plugin per farlo, ma se il metodo di spedizione associato all’Europa è il secondo, il codice potrebbe essere quello pubblicato con le righe 5,6,7 e 8 così modificate:

    if ( 'flat_rate:2' != $method[0] ) { 
    unset( $gateways['cod'] ); 
    unset( $gateways['bacs'] ); 
    } 

Commenta

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.