Функція запуску ПІСЛЯ зберігаються параметри теми?


10

Дивне запитання: як я можу запустити спеціальну функцію ПІСЛЯ збереження моїх налаштувань теми? Я бачу, що функція register_settings () має санітарний зворотний виклик, але це працює до зміни параметрів. Мені потрібно щось запустити після їх порятунку. Чи є дія чи фільтр, який я можу використовувати для цього?

EDIT -

Так що я встановив цей параметр:

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

Відповіді:


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 ); Або це ім'я ідентифікатора?
регберт

Також - я просто спробував і те, і інше, здається, не звільнили звичай. Дивіться моє оновлене запитання щодо коду, який я використав
rugbert
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.