Cum să afișezi mesajele de eroare folosind clasa WP_Error?

4 feb. 2013, 06:53:47
Vizualizări: 28.6K
Voturi: 3

Am un cod pentru formularul de înregistrare în fișierul meu functions.php care arată astfel

if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == 'registration') {
       $error = new WP_Error();
        if (empty(esc_attr($_POST['email'])))
        {
            $error->add('regerror','Emailul este obligatoriu.');
        }
        if (!is_email(esc_attr($_POST['email'])))
        {
            $error->add('regerror','Format email invalid.');

        }
        if (email_exists(esc_attr($_POST['email'])))
        {
            $error->add('regerror','Emailul este deja folosit. Ți-ai uitat parola? Dacă da, click aici pentru resetare.');

        }
}

Poate cineva să-mi spună cum să afișez aceste mesaje de eroare în pagina mea de înregistrare?

Actualizare:

Pagina mea de înregistrare are un cod care arată astfel

<form method="post" action="<?php the_permalink(); ?>">
<!-- câmpurile formularului aici -->
<input name="action" type="hidden" value="registration" />
<input type="submit" id="submit" value="Înregistrare">
</form>
2
Comentarii

Asta e tot? Cu siguranță mai există cod? Trebuie să fie într-o funcție, nu? Este conectat la ceva? Este apelat direct? Ce?

s_ha_dum s_ha_dum
4 feb. 2013 07:16:23

@s_ha_dum Te rog verifică actualizarea mea. Nu este o funcție. Bucla mea if verifică parametrul action. Dacă action == registration atunci codul va fi executat. Nu este conectat la nimic. Și da, am și alte coduri suplimentare în bucla mea if. Le-am redus doar pentru a simplifica întrebarea.

PrivateUser PrivateUser
4 feb. 2013 07:24:49
Toate răspunsurile la întrebare 1
1

Cu acest cod în functions.php probabil va trebui să declari $error ca fiind global astfel:

if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == 'registration') {
    global $error;
    $error = new WP_Error();
    // restul codului tău

Apoi folosește din nou global $error; pe pagina de înregistrare înainte de a încerca să-l utilizezi.

Dar nu înțeleg de ce ai acel cod în functions.php. Pare a fi o proiectare nepotrivită. Rulezi acea condiție if de fiecare dată când se încarcă orice pagină, iar se pare că ai nevoie de ea doar pe pagina de înregistrare, presupunând că vorbim despre o pagină pe care ai scris-o tu și nu despre pagina de înregistrare/autentificare din WordPress de la wp-login.php. Având în vedere această presupunere, mută acel cod pe pagina de înregistrare și va fi disponibil fără probleme. WP_Error are metode care te vor ajuta să accesezi datele.

4 feb. 2013 07:40:15
Comentarii

Mulțumesc. Voi muta codul pe pagina de înregistrare, așa cum mi-ai recomandat.

PrivateUser PrivateUser
4 feb. 2013 07:57:04