Exécuter la fonction APRÈS que les options du thème soient enregistrées?


10

Question étrange, comment puis-je exécuter une fonction personnalisée après que mes paramètres de thème sont enregistrés? Je vois que la fonction register_settings () a un rappel de nettoyage, mais qui s'exécute avant que les paramètres ne soient modifiés. J'ai besoin de quelque chose pour courir après leur sauvegarde. Y a-t-il une action ou un filtre que je peux utiliser pour faire cela?

ÉDITER -

Donc j'ai ce réglage que j'ai fait:

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

et cette fonction:

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

Réponses:


18

Utilisez le filtre update_option_{$option}. Il s'exécute après une sauvegarde réussie.

$option est le nom de votre option, et vous obtenez l'ancienne et la nouvelle valeur comme paramètres.

De wp-includes/option.php:

do_action( "update_option_{$option}", $oldvalue, $_newvalue );

Utilisez-le comme ceci pour une option wpse_themesettings:

add_action( 'update_option_wpse_themesettings', 'wpse_check_settings', 10, 2 );

function wpse_check_settings( $old_value, $new_value )
{
    // do something
}

Hmmm d'accord. Donc, si j'ai des dizaines d'options, sur des dizaines de pages / groupes d'options, je devrais faire une option cachée pour chaque page pour exécuter la même fonction?
— rugbert

Non, vous utilisez simplement les noms des options que vous souhaitez enregistrer. Pas d'options cachées supplémentaires.
— fuxia

ouais j'y ai pensé en entrant dans le boulot et j'ai dit "duh"! Merci pour la réponse cependant, vous venez de rendre mon projet 100% plus génial
— rugbert

Hé, juste pour que nous soyons clairs. Quand vous dites d'utiliser update_option {$ option}, vous voulez dire l'argument $ page dans la fonction register_settings (), n'est-ce pas? comme add_settings_field( $id, $title, $callback, $page, $section, $args ); ou est-ce le nom de l'ID?
— rugbert

Aussi - j'ai juste essayé les deux et ils ne semblaient pas déclencher la coutume. Voir ma question mise à jour pour le code que j'ai utilisé
— rugbert
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.