web-dev-qa-db-ja.com

誰かがプラグインのオプションを保存した場合はフックしますか?

私は様々なオプションを持つプラグインを書きました、そしてユーザーがこのオプションを保存する場合CSSファイルが生成されます。私の意図は、CSSはオプションが保存されたときにのみ作成され、誰かがページにアクセスしたときには作成されず、CSSは毎回作成されることです。

だから私は誰かがオプションを保存するときに起動するフックが必要です。私はこれを試してみました:

    public function __construct( $file ) {
        $this->options = get_option('clb_plugin_options');
        add_filter( 'pre_update_option_clb_plugin_options', array( $this, 'generate_options_css' ) );       
}

    public function generate_options_css() {
[doing all css related stuff)

        return $this->options;

}

しかし、この場合、私がフォームに加えた変更を考慮に入れることはしません。私はオプションを$ this-> optionsにすでに保存しているからです。それでは、誰かがプラグインのオプションを保存した後にフックするにはどうすればいいですか?

4
Torben

私はあなたの目的に同意しませんが、ここであなたが使うかもしれないアクションフック(あなたはオプションを保存するためにあなたが使っているものを私たちに示していません。

オプションを保存するためにadd_optionを使うなら:

add_option_ {option_name}afterを実行します。_ "option_name"という名前のオプションがadd_option()関数を使って追加されました。たとえば、 "foo"という名前のオプションの場合:

add_action('add_option_foo', function( $option_name, $option_value ) {
     //....
}, 10, 2);

add_option:オプションをデータベースに追加するbeforeを実行します。例:

add_action('add_option', function( $option_name, $option_value ) {
     //....
}, 10, 2);

added_option:オプションを追加したafterを実行します。例:

add_action('added_option', function( $option_name, $option_value ) {
     //....
}, 10, 2);

delete_option()のアナログアクションもあります:delete_option_{option_name}delete_optionおよびdeleted_option

オプションを保存するためにupdate_optionを使うなら:

update_optionは新しいオプションの保存/作成にも使用できます)

update_option_ {option_name}afterを実行します。_ "option_name"という名前のオプションが更新されました。たとえば、 "foo"という名前のオプションの場合:

add_action('update_option_foo', function( $old_value, $value ) {
     //....
}, 10, 2);

update_option:オプションを更新するbeforeを実行します。例:

add_action('update_option', function( $option_name, $old_value, $value ) {
     //....
}, 10, 3);

updated_optionafterを実行し、オプションを更新しました。例:

add_action('updated_option', function( $option_name, $old_value, $value ) {
     //....
}, 10, 3);
12
cybmeta

pdate_option_ {option_name}が設定の変更のフォローアップで1回だけ実行されなかったことを経験しました。

最後に、生成スクリプトをadd_options_pageコールバック関数に追加して解決しました。このように、オプションページが開かれた場合に生成されますが、オーバーヘッドは許容できるようです。

0
Andreas