Disabilitare il campo email nei dettagli account cliente WooCommerce

31 mar 2017, 08:13:01
Visualizzazioni: 15.1K
Voti: 2

Esiste un modo per disabilitare il campo email nei dettagli dell'account cliente WooCommerce? O c'è qualche hook o azione disponibile per fare questa modifica? Sto utilizzando un tema predefinito e non sono molto esperto di PHP. Ho provato il plugin "Prevent Email Change" di Happy Plugins, ma non ha funzionato.

Apprezzerei molto qualsiasi aiuto in merito.

Grazie,

0
Tutte le risposte alla domanda 3
4

Puoi farlo aggiungendo questo codice al file functions.php:

function custom_override_checkout_fields( $fields ) {
    unset($fields['billing']['billing_email']);    
    return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields', 1000, 1 );

Ma questo è un approccio errato, poiché WooCommerce utilizza l'email per notificare all'utente lo stato dell'ordine.

31 mar 2017 21:19:56
Commenti

Ciao, grazie per questo. Sì, lo sapevo. Ma quello che volevo è che possano registrare la loro email al momento del checkout e poi, una volta che il loro account è stato completamente creato, non possano più modificare la loro email nella pagina dei Dettagli Account. Sarebbe possibile?

Bry Ledesma Bry Ledesma
3 apr 2017 03:05:21

WordPress non ha un filtro o un hook per impedire la modifica dell'email. Happy Plugin semplicemente disabilita il campo email nella pagina di amministrazione, quindi non può impedire azioni nella pagina dei Dettagli Account in WooCommerce. Ma qual è il motivo per vietarlo? Gli utenti sono identificati dagli ID.

KAGG Design KAGG Design
3 apr 2017 03:46:25

Ho una valida ragione per questo. Sto creando un sito eLearn con accesso ristretto. Solo gli utenti di domini autorizzati possono iscriversi. La validazione dell'email avviene al momento della registrazione, ma gli utenti possono ancora modificare la loro email tramite questa pagina, cosa che non dovrebbe accadere.

pmdci pmdci
18 ago 2017 20:43:20

questo elimina semplicemente il campo dalla visualizzazione. Non lo disabilita.

Debbie Kurth Debbie Kurth
12 apr 2022 23:46:13
0

Questo è quello che utilizzo. Stavo anche risolvendo il problema degli indirizzi email errati sugli account registrati. Quindi ho semplicemente disabilitato il campo e impostato 'required' => false se l'utente è loggato.

if ( is_user_logged_in() ) {
    $fields['billing']['billing_email'] = [
        'label' => 'Indirizzo Email',
        'required'  => false,
        'custom_attributes' => [
            'disabled' => 'disabled',
        ]
    ];
} else {
    $fields['billing']['billing_email'] = [
        'label' => 'Indirizzo Email',
        'required'  => true,

    ];
}

Spero che questo possa aiutare qualcuno là fuori!

7 apr 2020 10:36:59
2

Ho trovato in questo file: wp-content\plugins\woocommerce\includes\class-wc-countries.php:

public function get_address_fields( $country = '', $type = 'billing_' )

Imposta required su false e l'email diventerà opzionale.

13 lug 2020 05:10:24
Commenti

Ciao Manuel, benvenuto su wordpress.stackexchange. Anche se la tua risposta è tecnicamente corretta, devo votarla negativamente perché modificare un plugin in quel modo non è raccomandato. Cosa succederebbe se il plugin venisse aggiornato e le modifiche cancellate? È meglio usare un hook o una funzione filter per raggiungere l'obiettivo dell'OP. Grazie per aver partecipato, spero che questa sia la prima di tante risposte utili che fornirai :)

admcfajn admcfajn
13 lug 2020 07:07:33

L'ho votata positivamente perché è un modo creativo per risolvere un problema. Non necessariamente il modo giusto, ma l'hai trovato e potrebbe essere l'unica soluzione per alcuni. Non è corretto o giusto scoraggiare la soluzione, dato che si sarebbe potuto usare un child theme o qualsiasi altro numero di override protetti dagli aggiornamenti del plugin. Il modo migliore è cambiare il campo [required] a 0. Usando add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); valori: [billing_email] => Array ( [label] => Indirizzo email [required] => 1

Debbie Kurth Debbie Kurth
12 apr 2022 23:50:01