Disattivare metodi di pagamento woocommerce

Disattivare metodi di pagamento woocommerce

woocommerceA volte è necessario  intervenire più drasticamente rispetto ai comuni plugin per adattare il nostro ecommerce wordpress alle nostre necessita.

Mi è capitato di recente di dover gestire i metodi di pagamento con particolari condizioni, disattivando alcune modalità secondo alcune specifiche.

Ed ecco che ci viene in aiuto il nostro ormai conosciuto functions.php dove andremo ad inserire la nostra condizione per disattivare le modalità di pagamento per esempio: in base alla categoria dei prodotti presenti nel carrello o in base al tipo di spedizione scelta.

add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_role' );

function payment_gateway_disable_role( $available_gateways ) {
global $woocommerce;
	
        //verifica se spedizione nazionale
	if ( <condizione>) {
	unset( <modalita di pagamento>); //disattiva paypal
    	}
    return $available_gateways;
}

Nell’esempio vi mostro come disattivare paypal se la spedizione è nazionale:

add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_role' );

function payment_gateway_disable_role( $available_gateways ) {
global $woocommerce;
	//trova la modalità di pagamento selezionata
	$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
 	$chosen_shipping = $chosen_methods[0]; 
        //verifica se spedizione nazionale
	if ( $chosen_shipping=='local_delivery' ) {
	unset( $available_gateways['paypal'] ); //disattiva paypal
    	}
    return $available_gateways;
}

Qui di seguito vi mostro alcune delle modalità di pagamento che si possono disattivare

unset( $available_gateways['paypal'] ); // paypal
unset( $available_gateways['bacs'] ); //bonifico bancario
unset( $available_gateways['cod'] ); //in contanti – contrassegno
unset( $available_gateways['cheque'] ); //assegno

Sperando che i nostri articoli vi siano stati di aiuto vi invito a lasciare un commento in caso di chiarimenti o per approfondire eventualmente il tema trattato.

Francesca

25 commenti

Andrea Scritto il21:35 - 16 Novembre 2022

Ciao,
È possibile disattivare tutte le modalità di pagamento tranne il “Pagamento alla consegna” se il cliente seleziona “Ritiro in sede”?
Grazie

    Francesca Scritto il09:25 - 18 Novembre 2022

    Si certo

      Andrea Scritto il00:01 - 19 Novembre 2022

      Immaginavo! 🙂
      Intendevo dire se fosse possibile vedere la funzione da aggiungere al file functions.php o tramite snippet.
      Grazie

        Francesca Scritto il17:09 - 21 Novembre 2022

        Lo snipped mi sembra chiaro, se desideri qualcosa di più specifico e personalizzato ti consiglio di contattarmi privatamente.

      Raffaele Scritto il08:28 - 28 Novembre 2022

      Ciao Francesca. Riguardo i pagamenti su woocommerce. I clienti possono scegliere il contrassegno senza che io l’ho impostato e reso disponibile. Come è possibile? Grazie per la risposta

        Francesca Scritto il08:44 - 28 Novembre 2022

        Buongiorno Raffaele, andrebbero eseguiti dei test e dei controlli per capire. Il mio consiglio è quello di simulare un ordine uguale a quelli che ti hanno attivato il contrassegno

Emanuele Scritto il10:32 - 17 Agosto 2022

Invece per disattivare paypal per una categoria di prodotti come si fa?

    Francesca Scritto il16:29 - 8 Settembre 2022

    Va intercettata la categoria all’atto del controllo

Nello Della Ragione Scritto il12:44 - 16 Luglio 2022

Vorrei fare in modo che alcuni prodotti o una determinata categoria potesse essere configurata con il metodo di pagamento a mano grazie

    Francesca Scritto il16:29 - 8 Settembre 2022

    Credo di non aver compreso la necessità specifica, ma se vuole una proposta personalizzata può scriverci via mail i dettagli così da valutare la situazione più adatta.

Vincenzo Lavino Scritto il11:47 - 22 Marzo 2022

Ha funzionato alla perfezione e mi è stato utile, grazie mille per la condivisione

Umberto Scritto il16:19 - 16 Novembre 2021

Salve, se avessi la necessità di avere una classa di spedizione per esempio express, il costo della classe pari a 20€, se però l’utente fa un ordine da 150€ il costo di spedizione si abbassa a 10€.
Come si può fare una cosa del genere?
Grazie

Marco Scritto il10:26 - 16 Giugno 2021

Buongiorno,
ho un cliente che ha la necessità di spedire alcuni prodotti solamente in Italia disattivando la possibilità di acquisto in altri paesi europei. Come posso fare?

    Francesca Roccabruna Scritto il11:51 - 28 Luglio 2021

    Imposti la spedizione solo per lo stato che di interessa

Simona Scritto il06:41 - 1 Luglio 2020

Ho lo stesso problema anche io, molti selezionano la spedizione in contrassegno quindi a prezzo maggiorato, ma poi inseriscono come metodo di pagamento il Bonifico, il che non ha senso ma succede perché poi lasciano l’opzione di default probabilmente senza ricontrollare né selezionare di nuovo il contrassegno.
Esiste un codice che può eliminare l’opzione PayPal e Bonifico se uno ha già selezionato come spedizione il contrassegno?

@Teodorico: Function.php lo trovi sotto editor insieme a tutte le pagine del tuo sito, versione codice ovviamente.

    Francesca Roccabruna Scritto il09:36 - 23 Luglio 2020

    Io utilizzo per praticità un plugin acquistato su Codecanyon che gestisce il costo maggiorato se scelgono la spedizione in contrassegno. Il costo viene aggiunto indipendentemente dal tipo di pagamento.

Daniele Scritto il10:52 - 17 Aprile 2020

Buongiorno a tutti, da giorni cerco sul web come risolvere questa faccenda con woocommerce:
– ho il pagamento alla consegna impostato con un extra di euro 4
– vorrei che per alcune province questo importo sia zero.
C’è un modo?
Grazie da subito per il vostro supporto.

    Francesca Roccabruna Scritto il10:23 - 21 Aprile 2020

    Io ho usato un plugin premium acquistato su CodeCanyon (Price and Discount) di permette di gestire diverse.

Giovanni Scritto il12:05 - 22 Novembre 2017

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

salvatore iengo Scritto il15:41 - 2 Ottobre 2017

Tutto perfetto però così paypal mi rimane disattivato.
Nel mio caso se riattivo local delivery dovrebbe riattivarsi.
Mi suggerisci il codice da inserire come elese ?
Se è possibile ?

Teodorico Scritto il09:41 - 10 Aprile 2017

Salve, io vorrei eliminare i metodi di pagamento PayPal e Bonifico quando è attiva spedizione “Contrassegno”. Come posso fare? Nel campo ‘local delivery’ cosa devo inserire visto che la mia spedizione si chiama ‘contrassegno’? Un’altra cosa, dove si trova il file function.php?

Grazie mille per il tuo articolo, spero tu possa aiutarmi.

luca Scritto il12:13 - 30 Gennaio 2017

Salve

Volevo chiedere nel caso si volesse condizionare il disattivare un determinato tipo di pagamento in base alla categoria dei prodotti presenti nel carrello , come agire sulla seguente funzione ???

Grazie mille
Luca

Giulio Scritto il12:41 - 19 Ottobre 2015

Buongiorno,
grazie per l’articolo messo a disposizione. Chiedevo un approfondimento:
Come aggiungo una funzione che mi disattiva i metodi di pagamento in base al ruolo utente ? Vorrei disattivare tutti i metodi di pagamento per ruolo “customer1” e aggiungere un campo personalizzato precedentemente creato e viceversa per ruolo “custemer”
Grazie 1K
Giulio

    Francesca Scritto il14:55 - 4 Novembre 2015

    Buongiorno Giulio,
    l’intervento che richiedi è un pò complesso perchè va ad intervenire non solo sui metodi di pagamento ma anche su eventuali campi aggiuntivi che non mi è chiaro se siano collegati o meno. Contattami in privato se ti va.

Cosimo Scritto il17:28 - 22 Aprile 2015

You made my day!
Grazie mille!

Lascia un commento

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

©2021 AGANIS WEB SOFTWARE di Francesca Roccabruna P.IVA TRENTO 02183500228 - N.REA 205930 La Web Agency per la realizzazione del tuo sito web
Privacy Policy