¿Cómo mostrar mensajes de error usando la clase WP_Error?
Tengo un código de formulario de registro en mi archivo functions.php como este
if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == 'registration') {
$error = new WP_Error();
if (empty(esc_attr($_POST['email'])))
{
$error->add('regerror','El email es obligatorio.');
}
if (!is_email(esc_attr($_POST['email'])))
{
$error->add('regerror','Formato de email inválido.');
}
if (email_exists(esc_attr($_POST['email'])))
{
$error->add('regerror','El email ya está en uso. ¿Olvidaste tu contraseña? Si es así, haz clic aquí para restablecerla.');
}
}
¿Ahora alguien puede decirme cómo mostrar esos mensajes de error en mi página de registro?
Actualización:
Mi página de registro tiene un código como este
<form method="post" action="<?php the_permalink(); ?>">
<!-- aquí van los campos del formulario -->
<input name="action" type="hidden" value="registration" />
<input type="submit" id="submit" value="Registrar">
</form>
Con eso en el functions.php probablemente tendrías que declarar $error como global así:
if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == 'registration') {
global $error;
$error = new WP_Error();
// el resto de tu código
Y luego hacer global $error; nuevamente en tu página de registro antes de intentar usarlo.
Pero no entiendo por qué tienes ese código en functions.php. Eso me parece un mal diseño. Estás ejecutando ese condicional if cada vez que se carga cualquier página y parece que solo lo necesitas en tu página de registro, asumiendo que es algo que has escrito tú mismo y que no te refieres a la página de registro/inicio de sesión incorporada en wp-login.php. Dado ese supuesto, simplemente mueve ese código a la página de registro y estará disponible sin problemas. WP_Error tiene métodos que te permitirán acceder a los datos.