¿Cómo lograr Post-Redirect-Get en la página del menú de administración de un complemento de WordPress?

2 minutos de lectura

avatar de usuario
Pellaeon

Estoy escribiendo un complemento de WordPress, que agrega una página de menú de administración. En la página hay un formulario. Cuando se envía el formulario, el complemento escribe en la base de datos. Pero luego me encuentro con un problema: cada vez que el usuario vuelve a cargar la página, se le pregunta si desea enviar el POSTDATA nuevamente. Si el usuario hace clic en sí, el complemento vuelve a escribir en la base de datos.

Después de buscar un poco, encontré una solución, el patrón “Post-Redirect-Get”. Luego, más tarde, descubrí que es difícil implementar este patrón en un complemento de WordPress.

  1. El complemento en sí no puede enviar un HTTP 301/302 porque el núcleo de WordPress ya ha generado algunos contenidos.

  2. Es posible insertar una metaetiqueta (para emitir una redirección) en el encabezado HTML. Pero de acuerdo con el W3C, la redirección meta está obsoleta, por lo que creo que es mejor no usarla.

  3. Usa JavaScript window.location. Pero, ¿y si JavaScript está deshabilitado en el navegador del usuario?

¿Hay alguna otra forma de lograr la redirección?

  • +1 por preocuparse por Post-Redirect-Get… algo que el 90% de los problemas de los desarrolladores de wordpress probablemente nunca han escuchado.

    – estúpido

    13 de septiembre de 2010 a las 14:03

Podría intentar hacer el procesamiento de su complemento en el admin_init gancho, que, creo, se ejecuta antes de que se emita cualquier contenido.

  • +1. Engancharse a una acción temprana como admin_init es el camino a seguir. También es una buena idea usar el wp_redirect función.

    – mjangda

    13 de septiembre de 2010 a las 14:04

Para ahorrar MUCHO trabajo. Simplemente use la API de configuración de WordPress.

Artículo del códice -> aquí

Más artículo útil de Otto -> aquí

El uso de la API de configuración de WordPress se encargará del problema “Post-Redirect-Get” que está describiendo.

avatar de usuario
usuario3293887

  1. verifique si la tabla existe en la base de datos o inserte en sql si no existe para no realizar ninguna acción si la tabla existe en la base de datos.

  2. la opción es set_option donde se activa el complemento.

  3. use la función de wordpress register_activation_hook para activar el complemento de opciones de inclusión

perdon por mi ingles, es muy malo, pero creo que se puede entender

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad