テーマオプションが保存された後に関数を実行しますか?


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

回答:


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 2013

いいえ、保存するオプションの名前を使用するだけです。追加の隠しオプションはありません。
fuxia

ええ、私は仕事に行く途中でそれを考え、「だ」と言いました!でも答えてくれてありがとう。あなたは私のプロジェクトを100%素晴らしいものにしました
rugbert 2013

ねえ、私たちは明確です。update_option {$ option}を使用するとは、register_settings()関数の$ page引数を意味しますよね?そう add_settings_field( $id, $title, $callback, $page, $section, $args ); ですか、それともID名ですか?
rugbert 2013

また、私は両方を試してみましたが、習慣を発動しなかったようです。私が使用したコードの最新の質問を見る
rugbert 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.