Функция запуска ПОСЛЕ опции темы сохранены?

10

Странный вопрос, как запустить пользовательскую функцию ПОСЛЕ сохранения настроек моей темы? Я вижу, что функция register_settings () имеет функцию обратного вызова sanitize, но она запускается до изменения настроек. Мне нужно что-то запустить после того, как они спасены. Есть ли какое-либо действие или фильтр, который я могу использовать для этого?

РЕДАКТИРОВАТЬ -

Итак, у меня есть эта настройка, которую я сделал:

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

и эта функция:

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
источник

Ответы:

18

Используйте фильтр update_option_{$option}. Он запускается после успешного сохранения.

$option это имя вашей опции, и вы получаете старое и новое значение в качестве параметров.

От wp-includes/option.php:

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

Используйте это как вариант для опции wpse_themesettings:

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

function wpse_check_settings( $old_value, $new_value )
{
    // do something
}
Фуксия
источник
Хммм ладно. Итак, если у меня есть десятки опций, более десятка групп страниц / опций, мне нужно было бы сделать скрытую опцию для каждой страницы, чтобы запускать одну и ту же функцию?
Регберт
Нет, вы просто используете названия параметров, которые хотите сохранить. Никаких дополнительных скрытых опций.
fuxia
да, я подумал об этом по дороге на работу и сказал "дух"! Спасибо за ответ, вы только что сделали мой проект на 100% более
классным
Эй, просто чтобы нам было ясно. Когда вы говорите использовать update_option {$ option}, вы имеете в виду аргумент $ page в функции register_settings (), верно? так вроде add_settings_field( $id, $title, $callback, $page, $section, $args ); или это имя ID?
Регберт
Кроме того - я только попробовал оба, и они, казалось, не стреляли в обычай. Смотрите мой обновленный вопрос о коде, который я использовал
rugbert