Uruchom funkcję PO zapisaniu opcji motywu?

10

Dziwne pytanie: jak uruchomić niestandardową funkcję PO zapisaniu ustawień motywu? Widzę, że funkcja register_settings () ma wywołanie zwrotne odkażające, ale działa przed zmianą ustawień. Potrzebuję czegoś do uruchomienia po tym, jak zostaną uratowani. Czy istnieje akcja lub filtr, którego można użyć do tego celu?

EDYTOWAĆ -

Więc mam to ustawienie, które wprowadziłem:

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

i ta funkcja:

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
źródło

Odpowiedzi:

18

Użyj filtra update_option_{$option}. Działa po udanym zapisaniu.

$option to nazwa twojej opcji, a ty otrzymujesz starą i nową wartość jako parametry.

Od wp-includes/option.php:

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

Użyj tego w ten sposób, aby uzyskać opcję wpse_themesettings:

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

function wpse_check_settings( $old_value, $new_value )
{
    // do something
}
fuxia
źródło
Hmmm ok. Więc jeśli mam dziesiątki opcji, kilkadziesiąt stron / grup opcji, musiałbym stworzyć ukrytą opcję dla każdej strony, aby uruchomić tę samą funkcję?
rugbert
Nie, wystarczy użyć nazw opcji, które chcesz zapisać. Bez dodatkowych ukrytych opcji.
fuxia
tak, pomyślałem o tym w drodze do pracy i powiedziałem „duh”! Dzięki za odpowiedź, właśnie
sprawiłeś
Hej, żebyśmy byli pewni. Kiedy mówisz o użyciu opcji update_option {$ option}, masz na myśli argument $ page w funkcji register_settings (), prawda? więc jak add_settings_field( $id, $title, $callback, $page, $section, $args ); Czy to nazwa identyfikatora?
rugbert
Ponadto - właśnie wypróbowałem oba i nie wydawały się odpalać zwyczaju. Zobacz moje zaktualizowane pytanie dotyczące kodu, którego użyłem
rugbert,