Je veux avoir ce genre de validation dans mon code:
if (/*OLD*/get_theme_mod($name) != /*NEW*/get_theme_mod($name)) {
// do something..
}
Ce code s'exécutera après avoir appuyé sur le bouton "Enregistrer et publier" dans le Appearance -> Customize
d'un thème. Y a-t-il un bon moyen d'y parvenir?
L'une des solutions que j'ai trouvées consiste à stocker l'ensemble get_theme_mod($name)
dans un PHP $_SESSION["$name"]
. Si la session existe, comparez la nouvelle get_theme_mod($name)
à cet ancien $_SESSION["$name"]
, si elles ne sont pas identiques, alors // do something..
:
// Check if the user is an admin for validation to improve performance.
if (current_user_can( 'manage_options' )) {
session_start();
// If the session is not set, the OLD is not equal to the NEW.
if (!isset($_SESSION['theme_mod_name']) {
// do something..
$_SESSION['theme_mod_name'] = get_theme_mod('theme_mod_name');
} else {
$theme_mod_name = get_theme_mod('theme_mod_name');
$theme_mod_name_s = $_SESSION['theme_mod_name'];
// Check if the OLD is equal to the NEW.
if ($theme_mod_name !== $theme_mod_name_s) {
// do something..
// Override the existing session for future validation.
$_SESSION['theme_mod_name'] = get_theme_mod('theme_mod_name');
}
}
}
Mais il a un petit con, un administrateur doit visiter son propre site ou effectuer un transport de paramètre refresh
pour effectuer la validation.