web-dev-qa-db-ja.com

オプションや設定が追加または更新されたときにフォーク/通知する

私は知っています:

add_option_{option_name}
update_option_{option_name}

しかし、これらは特定のオプション名を必要とします。私が探しているのは、 any オプションが変更された(追加または更新された)かどうか、またいつ変更されたかを知る方法です。

私が本当に避けようとしているのは、すべてのオプション名を見つけるためにクエリを実行し、次にそれらをループしてそれらのオプションのadd_option_{option_name}update_option_{option_name}の両方を動的に追加することです。 (実際にこれが唯一の方法であるならば、これはそれをするための大丈夫な方法であるか?)

助言がありますか?

2
CandyCoated

ソース(コアファイル、wp-includes/option.php)を見ると、いつでもターゲットフックタグを見つけることができます。

add_action('added_option', 'wpse230212_callback_add', 10, 2);
add_action('updated_option', 'wpse230212_callback_update', 10, 3);

function wpse230212_callback_add( $option_name, $option_value ) {
    // do stuff on add_option
}

function wpse230212_callback_update( $option_name, $old_value, $option_value ) {
    // do stuff on update_option    
}

それが役立つことを願っています。

5
Samuel Elh