¿Función de ejecución DESPUÉS de guardar las opciones de tema?


10

Pregunta extraña, ¿cómo puedo ejecutar una función personalizada DESPUÉS de guardar la configuración de mi tema? Veo que la función register_settings () tiene una devolución de llamada de desinfección, pero eso se ejecuta antes de que se cambie la configuración. Necesito algo para ejecutar después de que se guardan. ¿Hay alguna acción o filtro que pueda usar para hacer eso?

EDITAR -

Así que tengo esta configuración que hice:

add_settings_section(
    'kjd_body_background_settings_section', // ID hook name
    null, // label
    null, // function name
    'kjd_body_background_settings' // page name
);


    add_settings_field(
        'kjd_body_background_colors', // ID hook name
        null, //label
        null, //callback
        'kjd_body_background_settings', // page name
        'kjd_body_background_settings_section' // parent section 
);

y esta función:

function kjd_update_stylesheet( $oldvalue, $_newvalue ){
   echo 'updated!';
   die();
}
add_action('update_options_kjd_body_background_settings','kjd_update_stylesheet',10, 2);

//add_action('update_options_kjd_body_background_colors','kjd_update_stylesheet',10, 2);

Respuestas:


18

Usa el filtro update_option_{$option}. Se ejecuta después de un ahorro exitoso.

$option es el nombre de su opción, y obtiene el valor antiguo y el nuevo como parámetros.

De wp-includes/option.php:

do_action( "update_option_{$option}", $oldvalue, $_newvalue );

Úselo así para una opción wpse_themesettings:

add_action( 'update_option_wpse_themesettings', 'wpse_check_settings', 10, 2 );

function wpse_check_settings( $old_value, $new_value )
{
    // do something
}

Hmmmm está bien. Entonces, si tengo docenas de opciones, en docenas de páginas / grupos de opciones, ¿tendría que hacer una opción oculta para que cada página ejecute la misma función?
rugbert

No, solo usa los nombres de las opciones que desea guardar. No hay opciones adicionales ocultas.
fuxia

¡Sí, pensé en eso en mi camino al trabajo y dije "duh"! Gracias por la respuesta, sin embargo, que acaba de hacer mi proyecto 100% más impresionante
rugbert

Oye, solo para que quede claro. Cuando dice que use update_option {$ opción}, se refiere al argumento $ page en la función register_settings () ¿verdad? Entonces, ¿ add_settings_field( $id, $title, $callback, $page, $section, $args ); O es el nombre de identificación?
rugbert

Además, acabo de probar ambos y no parecían disparar la costumbre. Vea mi pregunta actualizada para el código que usé
rugbert
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.