Funktion ausführen, nachdem die Designoptionen gespeichert wurden?

10

Seltsame Frage, wie kann ich eine benutzerdefinierte Funktion ausführen, nachdem meine Designeinstellungen gespeichert wurden? Ich sehe, dass die Funktion register_settings () einen Sanitize-Rückruf hat, der jedoch ausgeführt wird, bevor die Einstellungen geändert werden. Ich brauche etwas zum Laufen, nachdem sie gerettet wurden. Gibt es eine Aktion oder einen Filter, mit dem ich das tun kann?

BEARBEITEN -

Also habe ich diese Einstellung gemacht:

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

und diese Funktion:

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

Antworten:

18

Verwenden Sie den Filter update_option_{$option}. Es läuft nach einer erfolgreichen Speicherung.

$option ist der Name Ihrer Option, und Sie erhalten den alten und den neuen Wert als Parameter.

Von wp-includes/option.php:

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

Verwenden Sie es so für eine Option wpse_themesettings:

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

function wpse_check_settings( $old_value, $new_value )
{
    // do something
}
Fuxia
quelle
Hmmm okay. Wenn ich also Dutzende von Optionen habe, müsste ich über Dutzende von Seiten / Optionsgruppen eine versteckte Option für jede Seite erstellen, um dieselbe Funktion auszuführen?
Rugbert
Nein, Sie verwenden nur die Namen der Optionen, die Sie speichern möchten. Keine zusätzlichen versteckten Optionen.
Fuxia
Ja, daran habe ich auf dem Weg zur Arbeit gedacht und "duh" gesagt! Vielen Dank für die Antwort, Sie haben gerade mein Projekt 100% fantastischer gemacht
Rugbert
Hey, nur damit wir klar sind. Wenn Sie sagen, dass update_option {$ option} verwendet werden soll, meinen Sie das Argument $ page in der Funktion register_settings (), oder? so wie add_settings_field( $id, $title, $callback, $page, $section, $args ); Oder ist es der ID-Name?
Rugbert
Außerdem habe ich beide ausprobiert und sie schienen den Brauch nicht zu feuern. Siehe meine aktualisierte Frage für den Code, den ich verwendet habe
Rugbert