保存主题选项后运行功能?


10

奇怪的问题,保存主题设置后如何运行自定义功能?我看到register_settings()函数具有清理回调,但该回调在更改设置之前运行。保存它们后,我需要运行一些东西。我可以使用某个动作或过滤器来执行此操作吗?

编辑-

所以我做了这个设置:

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

Answers:


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
}

嗯,好的。因此,如果我有几十个选项,超过几十个页面/选项组,我将不得不为每个页面创建一个隐藏选项以运行相同的功能?
rugbert

不,您只使用要保存的选项的名称。没有额外的隐藏选项。
fuxia

是的,我在上班途中想到了这一点,然后说““”!不过,感谢您的回答,您使我的项目更加
出色

嘿,我们很清楚。当您说要使用update_option {$ option}时,是指register_settings()函数中的$ page参数正确吗?像 add_settings_field( $id, $title, $callback, $page, $section, $args ); 还是ID名称?
rugbert

另外-我只是尝试了两个,他们似乎并没有解雇这个习俗。请参阅我使用的代码的最新问题
rugbert
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.