Tengo un problema un poco extraño con las reglas de reescritura que no funcionan 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. De hecho, esas llamadas están vaciando las reglas de reescritura cuando se llaman. ¿Cómo se esto? Uso de la solución para depurar la regla de reescritura de vaciado .
Actualmente, tengo reglas de reescritura en la activación y desactivación de complementos. 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 ser vaciadas en la página de configuración de administración de complementos "Guardar configuración". (Utiliza el estándar update_option();
) para guardar la configuración.
Me gustaría señalar que, según la configuración especificada, se crean tipos de publicación personalizados para que coincidan con la configuración especificada por el usuario. Por lo tanto, las reglas de reescritura deben eliminarse inmediatamente después de guardar la configuración. Aquí es donde las cosas no funcionan adecuadamente.
La solución de enlace anterior para depurar las reglas de reescritura proporcionadas por @toscho
está mostrando que está descargando toneladas de reglas de reescritura. Sin embargo, al visitar el elemento singular de tipo de publicación personalizado, o incluso el archivo de tipo de publicación personalizado para ese asunto, cada uno devuelve como errores 404.
El tipo de publicación personalizada se registra de forma correcta y adecuada. Sé con certeza que ese no es el problema.
Inmediatamente después de guardar la configuración de la página de administración del complemento. Se crean los tipos de publicaciones personalizadas, se ajusta la estructura de enlaces permanentes y se intenta eliminar todas las reglas de reescritura.
Los tipos de publicaciones personalizadas se cargan siempre y se cargan init
como de costumbre.
Por alguna razón, las reglas de reescritura no se limpian correctamente, porque como dije antes, visitar secciones singulares o de archivo del tipo de publicación personalizada devuelve errores 404.
Ahora la parte extraña, si todo lo que hago es simplemente visitar la página de configuración de enlaces permanentes de administración, y luego volver al frente para ver secciones singulares o archivadas del tipo de publicación personalizada, funcionan mágicamente como se esperaba.
¿Qué hace esa página de configuración de enlaces permanentes de administración que no estoy haciendo que permita que las reglas de reescritura se vacíen adecuadamente y las mías no?
Quiero decir, como 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. Prefiero que las reglas de reescritura se alineen correctamente dentro del código de mi complemento.
¿Hay algún punto en WordPress en el que el vaciado de las reglas de reescritura ya no borra TODAS las reglas?
admin_menu
- La página de configuración del complemento 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 $_POST
se procesa para actualizar la configuración de los complementos y eliminar las reglas de reescritura.
Dado que esta es una pregunta larga, estaría dispuesto a proporcionar bloques de código (si ayuda) en un enlace externo para ayudar a producir una respuesta válida.
init
que se registran los tipos de publicación. Me imaginé que la configuración de la página se estaba guardando y la página se volvería a cargar ... luego dispararía el init
gancho nuevamente para registrar los tipos de publicaciones necesarias. Así que pensé que los tipos de publicaciones ya estarían cargados, y todo lo que tenía que hacer era actualizar la opción, luego eliminar las reglas de reescritura de mi página de configuración de complementos. Publicaré una respuesta de cómo descubrí una solución.
flush_rewrite_rules
, que simplemente elimina larewrite_rules
opción y la regenera, puede abrir el archivowp-admin/options-permalinks.php
y ver dónde sucede. Como esta operación solo elimina la opción completa, no es posible eliminar parcialmente las reglas.