Cum să afișezi mesajele de eroare folosind clasa WP_Error?
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>

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.
