Esegui la funzione DOPO che le opzioni del tema sono state salvate?


10

Strana domanda, come posso eseguire una funzione personalizzata DOPO che le mie impostazioni del tema sono state salvate? Vedo che la funzione register_settings () ha un callback sanitize, ma che viene eseguito prima che le impostazioni vengano modificate. Ho bisogno di qualcosa per correre dopo che sono stati salvati. Esiste un'azione o un filtro che posso usare per farlo?

MODIFICARE -

Quindi ho questa impostazione che ho fatto:

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 
);

e questa funzione:

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);

Risposte:


18

Utilizzare il filtro update_option_{$option}. Funziona dopo un salvataggio riuscito.

$option è il nome della tua opzione e ottieni il vecchio e il nuovo valore come parametri.

Da wp-includes/option.php:

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

Usalo in questo modo per un'opzione wpse_themesettings:

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

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

Hmmm ok. Quindi, se ho dozzine di opzioni, su dozzine di pagine / gruppi di opzioni dovrei creare un'opzione nascosta per ogni pagina per eseguire la stessa funzione?
rugbert,

No, basta usare i nomi delle opzioni che si desidera salvare. Nessuna ulteriore opzione nascosta.
fuxia

sì, ci ho pensato mentre andavo al lavoro e ho detto "duh"! Grazie per la risposta, hai appena reso il mio progetto ancora più straordinario del 100%
rugbert,

Ehi, solo così siamo chiari. Quando dici di usare update_option {$ option} intendi l'argomento $ page nella funzione register_settings () giusto? così come add_settings_field( $id, $title, $callback, $page, $section, $args ); O è il nome ID?
rugbert,

Inoltre - ho appena provato entrambi e sembra che non abbiano sparato al costume. Vedi la mia domanda aggiornata per il codice che ho usato
rugbert,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.