Come visualizzare i messaggi di errore utilizzando la classe WP_Error?
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>

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.
