web-dev-qa-db-fra.com

Crochet si quelqu'un sauvegarde les options du plugin?

J'ai écrit un plugin qui a diverses options et si l'utilisateur enregistre ces options, un fichier CSS sera généré. Mon intention est que le CSS ne soit créé que lorsque les options sont sauvegardées et non lorsque quelqu'un visite la page et que le CSS soit créé à chaque fois.

J'ai donc besoin d'un crochet qui se déclenche lorsque quelqu'un sauvegarde les options. J'ai essayé comme ça:

    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;

}

Mais dans ce cas, les modifications que j'ai apportées à la forme ne sont pas prises en compte, je sauvegarde uniquement les options de $ this-> options déjà présentes. Alors, comment puis-je me connecter après que quelqu'un ait sauvegardé les options du plugin ...?

4
Torben

Bien que je ne sois pas d’accord avec votre objectif, voici les crochets d’action que vous pouvez utiliser (vous ne nous avez pas montré ce que vous utilisez pour enregistrer les options, je ne peux donc pas dire laquelle est la meilleure).

Si vous utilisez add_option pour enregistrer les options:

add_option_ {option_name} : Lance après a l'option portant le nom "option_name" a été ajoutée à l'aide de la fonction add_option(). Par exemple, pour l’option portant le nom "foo":

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

add_option : Runs before une option est ajoutée à la base de données. Exemple:

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

added_option : Lance après une option a été ajoutée. Exemple:

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

Il existe également des actions analogiques pour delete_option(): delete_option_{option_name}, delete_option et deleted_option

Si vous utilisez update_option pour enregistrer les options:

(update_option peut également être utilisé pour enregistrer/créer de nouvelles options)

update_option_ {option_name} : Lance après l'option portant le nom "option_name" a été mise à jour. Par exemple, pour l’option portant le nom "foo":

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

update_option : Runs before une option est mise à jour. Exemple:

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

updated_option : Lance après une option a été mise à jour. Exemple:

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