Jalankan fungsi SETELAH opsi tema disimpan?

10

Pertanyaan aneh, bagaimana saya bisa menjalankan fungsi kustom SETELAH pengaturan tema saya disimpan? Saya melihat bahwa fungsi register_settings () memiliki panggilan balik sanitasi, tetapi itu berjalan sebelum pengaturan diubah. Saya perlu sesuatu untuk dijalankan setelah mereka diselamatkan. Apakah ada tindakan atau filter yang dapat saya gunakan untuk melakukan itu?

EDIT -

JADI saya memiliki pengaturan yang saya buat:

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

dan fungsi ini:

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
sumber

Jawaban:

18

Gunakan filter update_option_{$option}. Ini berjalan setelah penghematan berhasil.

$option adalah nama opsi Anda, dan Anda mendapatkan nilai lama dan baru sebagai parameter.

Dari wp-includes/option.php:

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

Gunakan seperti ini untuk opsi wpse_themesettings:

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

function wpse_check_settings( $old_value, $new_value )
{
    // do something
}
fuxia
sumber
Hmmm ok. Jadi, jika saya memiliki lusinan opsi, lebih dari lusinan halaman / grup opsi saya harus membuat opsi tersembunyi untuk setiap halaman untuk menjalankan fungsi yang sama?
rugbert
Tidak, Anda hanya menggunakan nama opsi yang ingin Anda simpan. Tidak ada opsi tersembunyi tambahan.
fuxia
ya saya memikirkan hal itu dalam perjalanan ke kantor dan berkata "ya"! Terima kasih atas jawabannya, Anda baru saja membuat proyek saya 100% lebih hebat
rugbert
Hei, supaya kita jelas. Ketika Anda mengatakan untuk menggunakan update_option {$ option} maksud Anda argumen $ page di fungsi register_settings () kan? jadi seperti add_settings_field( $id, $title, $callback, $page, $section, $args ); Atau apakah itu nama ID?
rugbert
Juga - Saya baru saja mencoba keduanya dan mereka tampaknya tidak memecat kebiasaan. Lihat pertanyaan saya yang diperbarui untuk kode yang saya gunakan
rugbert