¿Cómo descargo las reglas después de guardar las configuraciones utilizando la API de configuración?

4

Estoy usando la API de configuración para permitir que el usuario alterne la opción has_archive en algunos tipos de publicaciones personalizadas. Cuando el usuario activa o desactiva los archivos, quiero eliminar las reglas de reescritura. Si yo mismo hubiera escrito la función de guardado, podría llamar a flush_rewrite_rules() y terminar con ella, pero la API de configuración se encarga de guardarlo. ¿Hay algún gancho en algún lugar que pueda usar?

Solución elegida @Stephen Harris

add_action('admin_init', 'my_plugin_register_settings');
function my_plugin_register_settings() {
    if (delete_transient('my_plugin_flush_rules')) flush_rewrite_rules();
    register_setting('my_plugin', 'my_plugin_settings', 'my_plugin_sanitize');
    // add_settings_section(), add_settings_field(),...
}

function my_plugin_sanitize($input) {
    set_transient('my_plugin_flush_rules');
    return $input;
}
    
pregunta Matt 03.04.2012 - 00:25

1 respuesta

3

Simplemente debes visitar la Configuración > Enlace permanente a la página (no tienes que hacer nada allí) después de guardar la configuración.

  

Si yo mismo hubiera escrito la función de guardar, solo podría llamar a flush_rewrite_rules ()

No del todo. Habría que llamar a flush_rewrite_rules() después de que el tipo de publicación personalizada se 'actualice' para reflejar los cambios, es decir, después de registrarlo. Por lo tanto, deberá llamar a la página siguiente para cargar, una vez que se haya registrado el CPT.

Usted podría usar un transitorio para activar flush_rewrite_rules () en el siguiente ( y solo el siguiente ) init (y después del CPT Esta registrado). Para que quede claro, flush_rewrite_rules() es costoso y no debería llamarse regularmente, por eso sugiero que simplemente le diga a los usuarios de su complemento que visiten la Configuración > Enlace permanente a la página después de modificar cualquier opción de enlace permanente, de esa manera las reglas se desechan solo cuando es realmente necesario.

    
respondido por el Stephen Harris 03.04.2012 - 00:39

Lea otras preguntas en las etiquetas