Hola @mgm2030
Lo que sucede es que wp_redirect
tiene que usarse antes de definir los headers.
Revisa esto y utiliza el mas adecuado; https://codex.wordpress.org/Plugin_API/Action_Reference#Actions_Run_During_an_Admin_Page_Request
Iniciador del debate
mgm2030
(@mgm2030)
Hola Kallookoo
Gracias por tu respuesta.
Me preguntaba de que manera ese link me puede ayudar a resolver el problema. Me puedes orientar?
He seguido indagando y he visto algunos ejemplos como:
https://premium.wpmudev.org/blog/handling-form-submissions/
donde practicamente es lo que he hecho yo. El autor dice:
The Form Handler for the POST request
At this stage, if you submit the form, you’ll be redirected to an empty page with the page URL set to the admin-post.php. This is because there is no form handler to process the request yet. To process the request, I registered my custom handler the_form_response in the define_admin_hooks() method of class-init.php like this:
Es exactamente el problema que tengo y practicamente hacemos lo mismo. Usamos wp_redirect.
Alguna idea?
Muchas gracias por todo y feliz navidad.
Hola @mgm2030
Veamos, ese link que te comente se usa para saber en que orden se ejecutan y decidir cual seria el mas apropiado, unos de los errores mas comunes cuando se crea un theme o plugin es cargar todo o casi todo usando el hook init, provocando que se carguen x cosas cuando no seria necesario y en algunos casos incluso creadondo problemas con el propio WordPress o algun otro plugin, theme.
Lo mas importante es saber declarar cuando y como se registra o carga tu classes o functions que es lo que parece que usas, yo no soy nadie para decirte si esta bien o no, pero si te comentare que tengas presente en intentar registrar, añadir, cargar, etc.. solo cuando sea necesario y unificar tu codigo para que sea mas facil el mantenimiento y que otros puedan entenderlo mejor. Revisa el handbook donde te sugieren o definen algunas pautas que seguir.
Sobre el wp_redirect
basicamente como te comente antes se tiene que usar antes de que el WordPress defina los headers, solo vi tu codigo por encima pero cualquier hook antes del send_headers
se podria usar, personalmente yo suelo usar el load-$page
ya que asi solo se ejecuta en la pagina que yo defina previamente.
Iniciador del debate
mgm2030
(@mgm2030)
Hola Kallookoo.
la funcion que contiene el wp_redirect
es ucmg_save_options
y es llamada en admin_init
(previo al send_headers
).
El plugin q estoy haciendo es sencillo. Lo hago para coger experiencia.
Mirare el handbook. Gracias por los consejos.