Tengo un problema un poco extraño con las reglas de reescritura que no se desechan correctamente.
He intentado usar flush_rewrite_rules();
y flush_rewrite_rules(true);
.
También he intentado globalizar $wp_rewrite
usando $wp_rewrite->flush_rules();
y $wp_rewrite->flush_rules(true);
Ninguno de los cuales parece estar limpiando las reglas de reescritura correctamente. Esas llamadas de hecho están vaciando las reglas de reescritura cuando son llamadas. ¿Cómo puedo saber esto? Uso de la solución para depuración de la regla de reescritura al vaciar la regla .
Actualmente, he reescrito las reglas eliminadas en la activación del complemento y la desactivación del complemento. No hay problemas allí.
Tengo una página de configuración de administración de complementos para que los usuarios configuren el complemento. Algunas de las configuraciones ajustan la estructura del enlace permanente, por lo que las reglas de reescritura deben borrarse en la página de configuración de administración del complemento "Guardar configuración". (Utiliza el estándar update_option();
) para guardar la configuración.
Me gustaría tener en cuenta que, según la configuración especificada, los tipos de publicación personalizados se crean para coincidir con la configuración especificada por el usuario. Por lo tanto, las reglas de reescritura deben borrarse inmediatamente después de guardar las configuraciones. Aquí es donde las cosas no funcionan adecuadamente.
La solución de enlace anterior para la depuración de reglas de reescritura provista por @toscho
muestra que se están vaciando toneladas de reescritura reglas. Sin embargo, al visitar el elemento singular de tipo de publicación personalizado, o incluso el archivo de tipo de publicación personalizado, cada uno devuelve como errores 404.
El tipo de publicación personalizada se registra correctamente y de manera adecuada. Sé con certeza que ese no es el problema.
Inmediatamente después, con la configuración de la página de administración del complemento, guardar. Se crean los tipos de publicación personalizados, se ajusta la estructura del enlace permanente y se intentan borrar todas las reglas de reescritura.
Los tipos de publicación personalizados se cargan siempre, y se cargan en init
como de costumbre.
Por alguna razón, las reglas de reescritura no se están vaciando correctamente, porque, como dije antes, visitar las secciones singulares o de archivo del tipo de publicación personalizada devuelve errores 404.
Ahora, la parte rara, si todo lo que hago es simplemente visitar la página de configuración de enlaces permanentes de administración, y luego volver al inicio para ver las secciones singulares o de archivo del tipo de publicación personalizada, mágicamente funcionan como se espera.
¿Qué hace la página de configuración de los enlaces permanentes de la administración que no estoy haciendo y que permite que las reglas de reescritura se realicen correctamente y las mías no?
Quiero decir, como una solución temporal, estoy redirigiendo al usuario a la página de configuración de enlaces permanentes de administración después de guardar la página de configuración de administración del complemento, pero esta no es una solución ideal. Preferiría que las reglas de reescritura se desecharan correctamente dentro del código de mi complemento.
¿Hay algún punto en WordPress en el que al vaciar las reglas de reescritura ya no se borran TODAS las reglas?
admin_menu
: la página de configuración de complementos se agrega a la administración de WordPress.
add_options_page()
: la página de configuración del complemento se agrega en el menú Configuración.
La página de configuración se representa en la devolución de llamada para add_options_page()
. Aquí también es donde se procesa $_POST
para actualizar la configuración del complemento y vaciar las reglas de reescritura.
Dado que esta ya es una pregunta larga, estaría dispuesto a proporcionar bloques de código (si es de ayuda) en un enlace externo que ayude a generar una respuesta válida.