Siempre me encuentro con la misma molestia, así que pensé que vería si hay alguna idea o experiencia por ahí ...
He creado un complemento que utiliza su propia página de administración. Tiene que. Ahora que resolví las cosas de WP_List_Table (), debo decir que es genial ... pero ...
Las páginas de complementos personalizados siempre se cargan como admin.php?page=...
a menos que quiera cargarlas directamente desde el directorio de complementos, lo que no hago. Ahora, si hago una 'acción' desde esa página, necesito procesarla de alguna manera y luego redirigir a la página sin el parámetro de acción. No importa si hago un GET o POST, en serio.
En todas sus páginas internas, WP hace esto en la misma página, verifica si hay una acción, si es así, la procesa y luego se redirige a sí misma sin la acción. Esto es posible, porque en estas páginas aún no se ha cargado el admin-header
.
Sin embargo, si intenta hacerlo en su propia página, la mitad de la interfaz de administración ya se ha enviado al navegador, por lo que ya no es posible realizar una redirección. Claramente, la solución es POST / GET directamente a otra página, cargar el marco WP en eso, hacer el procesamiento y luego redirigir a la página original ... pero ... eso es un poco molesto, porque ... mi original La página se carga a través de una devolución de llamada, por lo que se ejecuta dentro de un método de mi clase. Eso es hermoso.
Si carga una página separada, tengo que incluir manualmente wp-load.php
y estoy fuera de mi clase, lo cual es molesto, y en mi caso particular me molesta especialmente, porque solo estoy instanciando mi clase de plugin de forma anónima para que nadie puede acceder desde el exterior.
Entonces, después de esta larga historia ... ¿alguien encontró una buena solución para cargar otra página a través de una devolución de llamada sin tener toda la interfaz de administración ya configurada?
(Sé de una solución alternativa ... puedo enganchar una función en load-....
que verifica el parámetro de acción y realiza el procesamiento y la redirección. Pero me pregunto si hay una mejor manera).
Gracias.