Função de execução APÓS as opções de tema são salvas?

10

Pergunta estranha, como posso executar uma função personalizada APÓS minhas configurações de tema serem salvas? Vejo que a função register_settings () possui um retorno de chamada higienizado, mas que é executado antes que as configurações sejam alteradas. Eu preciso de algo para correr depois que eles forem salvos. Existe uma ação ou filtro que eu possa usar para fazer isso?

EDIT -

Então, eu tenho essa configuração que fiz:

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 esta função:

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

Respostas:

18

Use o filtro update_option_{$option}. É executado após uma economia bem-sucedida.

$option é o nome da sua opção e você obtém o valor antigo e o novo como parâmetros.

De wp-includes/option.php:

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

Use-o assim para uma opção wpse_themesettings:

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

function wpse_check_settings( $old_value, $new_value )
{
    // do something
}
fuxia
fonte
Hummm ok. Então, se eu tiver dezenas de opções, em dezenas de grupos de páginas / opções, eu teria que fazer uma opção oculta para que cada página execute a mesma função?
rugbert
Não, você apenas usa os nomes das opções que deseja salvar. Não há opções ocultas extras.
fuxia
Sim, eu pensei nisso no meu caminho para o trabalho e disse "duh"! Obrigado pela resposta, porém, você acabou de fazer meu projeto 100% a mais incrível
rugbert
Ei, só para esclarecer. Quando você diz para usar update_option {$ option}, você quer dizer o argumento $ page na função register_settings (), certo? assim como add_settings_field( $id, $title, $callback, $page, $section, $args ); Ou é o nome do ID?
rugbert
Além disso - eu apenas tentei os dois e eles não pareciam disparar o costume. Veja a minha pergunta atualizado para o código que usei
rugbert