Utente Senza Email?

12 lug 2011, 21:02:14
Visualizzazioni: 48.2K
Voti: 9

Quando si crea un utente in WordPress è richiesto un indirizzo email per quell'utente. Il sito web su cui sto lavorando richiede che gli utenti rimangano anonimi (fa parte di uno studio di ricerca) e considero l'email come un dato identificativo. Gli utenti verranno aggiunti manualmente, quindi l'email non è necessaria per confermare gli account o prevenire registrazioni spam.

Dovrò fornire un indirizzo email fittizio per ogni account, o c'è un modo per lasciare questo campo vuoto?

0
Tutte le risposte alla domanda 6
1
10

È possibile, ma non così facilmente tramite la pagina Utenti senza qualche stratagemma.

La funzione WordPress wp_create_user ti permette di inserire utenti senza indirizzi email, quindi un piccolo plugin personalizzato per accettare un nome di login e una password, e una chiamata a wp_insert_user o wp_update_user dovrebbe funzionare per te. Purtroppo non ho tempo per scriverlo per te, ma forse questo ti indicherà la direzione giusta.

$userdata = array ('user_login' => 'someuser', 'user_pass' => 'swordfish');
$new_user_id = wp_update_user( $userdata );

Aggiornamento per chi cerca una soluzione con la REST-API: Purtroppo, questo non è possibile tramite la rest-api. L'email è obbligatoria lì. vedi: https://developer.wordpress.org/rest-api/reference/users/#create-a-user

12 lug 2011 22:47:32
Commenti

Grazie! Stavo creando utenti con wp_insert_user() e, dopo aver visto che la colonna email è impostata per rifiutare valori null nel database, ho pensato che il problema fosse il mancato inserimento di un indirizzo email. Dopo che hai fatto notare che un'email non è richiesta dall'API di WordPress ho scoperto la vera fonte del problema.

Mike Wheaton Mike Wheaton
13 lug 2011 19:34:58
0

Utilizzando WordPress 4.7.2, ho risolto questo problema con i seguenti hook:

// Questo sopprimerà gli errori di email vuota quando si invia il modulo utente
add_action('user_profile_update_errors', 'my_user_profile_update_errors', 10, 3 );
function my_user_profile_update_errors($errors, $update, $user) {
    $errors->remove('empty_email');
}

// Questo rimuoverà la validazione javascript obbligatoria per il campo email
// Rimuoverà anche il testo '(obbligatorio)' nella label
// Funziona per i moduli nuovo utente, profilo utente e modifica utente
add_action('user_new_form', 'my_user_new_form', 10, 1);
add_action('show_user_profile', 'my_user_new_form', 10, 1);
add_action('edit_user_profile', 'my_user_new_form', 10, 1);
function my_user_new_form($form_type) {
    ?>
    <script type="text/javascript">
        jQuery('#email').closest('tr').removeClass('form-required').find('.description').remove();
        // Disabilita l'opzione di invio email di notifica per nuovo utente di default
        <?php if (isset($form_type) && $form_type === 'add-new-user') : ?>
            jQuery('#send_user_notification').removeAttr('checked');
        <?php endif; ?>
    </script>
    <?php
}
27 feb 2017 17:13:49
0

Secondo la documentazione di WordPress, la funzione wp_create_user permette anche di inserire utenti senza email, poiché è un parametro opzionale. Tutto ciò che devi fare è fornire un nome utente unico e una password.

16 dic 2011 17:43:27
0

Questa è una domanda piuttosto vecchia, ma è ancora attuale.

In ogni caso, @Milo aveva sicuramente l'idea giusta.

Ecco ciò che utilizzo e funziona benissimo. È molto utile quando vuoi creare utenti, ma preferisci mantenere il backend di WordPress bloccato. Ad esempio, se hai un blog e preferisci che i tuoi autori di contenuti ti inviino il loro lavoro, questo ti permette di creare un utente per loro senza effettivamente concedergli l'accesso. Oppure se preferisci bloggare sotto uno pseudonimo. O è persino utile per scopi di testing o, immagino, per quelle persone "dubbie" che vogliono creare un sacco di utenti falsi per il loro sito (sapete chi siete).

Aggiungi questo a functions.php temporaneamente o usalo con un plugin utile come Code Snippets.

function wpse_22754_insert_new_user() {

    $user_data = array(
    'ID' => '', // creato automaticamente
    'user_pass' => 'swordfish',
    'user_login' => 'someuser',
    'user_nicename' => 'Some User',
    'user_email' => '',
    'display_name' => 'John',
    'nickname' => 'jsmith',
    'first_name' => 'John',
    'last_name' => 'John',
    'user_url' => '',
    'user_registered' => '2015-06-26 10:55:55', // lascia vuoto per auto
    'role' => get_option('default_role') // administrator, editor, subscriber, author, ecc.
    );

    $user_id = wp_insert_user( $user_data );

    }
add_action( 'admin_init', 'wpse_22754_insert_new_user' );

Se stai cercando di aggiornare gli utenti dal backend dopo averli creati, aggiungi questo e eviterai di ricevere il messaggio di errore/avviso.

function wpse_22754_empty_email_error( $arg ) {
    if ( !empty( $arg->errors['empty_email'] ) ) unset( $arg->errors['empty_email'] );
}
add_action( 'user_profile_update_errors', 'wpse_22754_empty_email_error' );

Se preferisci usare un plugin, questo probabilmente farà al caso tuo:

https://wordpress.org/plugins/allow-multiple-accounts/

27 giu 2015 07:30:58
0

Il plugin "Import Users from CSV" ti permetterà di creare utenti senza un indirizzo email. Li ho aggiunti con...

last_name,first_name,display_name,user_login
Gamble,Bill,Bill Gamble,BillGamble

Il nostro club utilizza il database wp_users di Wordpress, ma abbiamo bisogno di registrare anche quei membri che non possiedono un'email

14 dic 2016 03:20:16
0

Ho trovato un metodo su YouTube quando ho cercato "come creare utenti senza email in WordPress"!

  1. installa il plugin "code snippets"
  2. scegli "aggiungi nuovo" in questo plugin
  3. scegli un nome per lo snippet. Ad esempio "Codice email non obbligatoria"

4.Inserisci questo codice:

// Questo sopprimerà gli errori di email vuota quando si invia il modulo utente
add_action('user_profile_update_errors', 'my_user_profile_update_errors', 10, 3);
function my_user_profile_update_errors($errors, $update, $user){
    $errors->remove('empty_email');
}

// Questo rimuoverà la validazione JavaScript obbligatoria per il campo email
// Rimuoverà il testo '(obbligatorio)' nella label
// Funziona per nuovo utente, profilo utente e modifica utente
add_action('user_new_form', 'my_user_new_form', 10, 1);
add_action('show_user_profile', 'my_user_new_form', 10, 1);
add_action('edit_user_profile', 'my_user_new_form', 10, 1);
function my_user_new_form($form_type) {
?>
<script type="text/javascript">
jQuery('#email').closest('tr').removeClass('form-required').find('.description').remove();
// Disattiva l'opzione invio email di notifica per nuovo utente di default
<?php if (isset($form_type) && $form_type === 'add-new-user') : ?>
jQuery('#send_user_notification').removeAttr('checked');
<?php endif; ?>
</script>
<?php
}
  1. seleziona "esegui solo nell'area di amministrazione" e scegli "salva modifiche e attiva"
  2. ora verifica, funziona!
6 apr 2020 16:58:09