¿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.
