web-dev-qa-db-fra.com

Exécuter la fonction lors de l'enregistrement des paramètres

J'utilise l'API de configuration pour la page de configuration d'un plugin. L'un des paramètres permet à l'utilisateur de modifier l'intervalle de travail cron pour le travail cron créé par ce plugin.

Par conséquent, j'aimerais exécuter une fonction lors de l'enregistrement de la page de paramètres, qui vérifie la valeur de la base de données et la compare à la valeur du travail cron existant. S'ils sont différents, le travail cron doit être recréé.

Ma logique est-elle correcte, et si oui, comment puis-je exécuter une telle fonction après avoir enregistré les paramètres du plug-in?

1
urok93

Je ne suis pas familier avec les paramètres wordpress api, mais je sais que les options générées par les paramètres api sont gérées/enregistrées dans wp-admin/options.php

Malheureusement,

if ( isset( $_POST[ $option ] ) ) {
        $value = $_POST[ $option ];
    if ( ! is_array( $value ) )
        $value = trim( $value );
    $value = stripslashes_deep( $value );
}
update_option( $option, $value );

comme vous pouvez le constater, pas de hook avant update_option.

Mais il existe une solution de contournement:

add_settings_field('..','..','callback');

function callback(){
   if($_GET['settings-updated']=='true'){
        //do your cron update stuff here.
   }
   echo 'output <input or something';
}

Pas très élégant cependant.

1
Jesse

La bonne réponse est add_action après qu'une option ait été mise à jour.

Voir cette réponse: Accrocher si quelqu'un sauvegarde les options du plugin?

0
Will