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

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
}

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.