Come visualizzare i messaggi di errore utilizzando la classe WP_Error?

4 feb 2013, 06:53:47
Visualizzazioni: 28.6K
Voti: 3

Ho un codice del modulo di registrazione nel mio file functions.php come questo

if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == 'registration') {
       $error = new WP_Error();
        if (empty(esc_attr($_POST['email'])))
        {
            $error->add('regerror','L\'email è obbligatoria.');
        }
        if (!is_email(esc_attr($_POST['email'])))
        {
            $error->add('regerror','Formato email non valido.');

        }
        if (email_exists(esc_attr($_POST['email'])))
        {
            $error->add('regerror','Email già in uso. Hai dimenticato la password? Se sì, clicca qui per reimpostarla.');

        }
}

Qualcuno può dirmi come visualizzare questi messaggi di errore nella mia pagina di registrazione?

Aggiornamento:

La mia pagina di registrazione ha un codice come questo

<form method="post" action="<?php the_permalink(); ?>">
<!-- qui vanno i campi del modulo -->
<input name="action" type="hidden" value="registration" />
<input type="submit" id="submit" value="Registrati">
</form>
2
Commenti

È tutto? Sicuramente c'è altro codice? Deve essere in una funzione, giusto? È agganciato a qualcosa? Chiamato direttamente? Cosa?

s_ha_dum s_ha_dum
4 feb 2013 07:16:23

@s_ha_dum Per favore controlla il mio aggiornamento. Non è una funzione. Il mio if loop controlla il parametro action. Se action == registration allora il codice verrà eseguito. Non è agganciato a nulla. E sì, ho anche del codice extra nel mio if loop. L'ho solo ridotto per rendere la domanda più semplice.

PrivateUser PrivateUser
4 feb 2013 07:24:49
Tutte le risposte alla domanda 1
1

Con questo codice in functions.php probabilmente dovresti dichiarare $error come global in questo modo:

if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == 'registration') {
    global $error;
    $error = new WP_Error();
    // il resto del tuo codice

E poi dovrai fare nuovamente global $error; nella tua pagina di registrazione prima di provare a usarla.

Ma non capisco perché hai quel codice in functions.php. Mi sembra un design poco ottimale. Stai eseguendo quel condizionale if ogni volta che viene caricata una pagina, quando probabilmente ti serve solo nella tua pagina di registrazione, che presumo sia qualcosa che hai scritto tu e che non stai parlando della pagina di registrazione/login integrata in wp-login.php. Data questa ipotesi, sposta semplicemente quel codice nella pagina di registrazione e sarà disponibile senza problemi. WP_Error ha metodi che ti permetteranno di accedere ai dati.

4 feb 2013 07:40:15
Commenti

Grazie. Sposterò il codice nella mia pagina di registrazione come mi hai consigliato.

PrivateUser PrivateUser
4 feb 2013 07:57:04