私は自分のコードでこの種の検証をしたいです。
if (/*OLD*/get_theme_mod($name) != /*NEW*/get_theme_mod($name)) {
// do something..
}
そのコードはテーマのAppearance -> Customize
で「保存して公開」ボタンを押した後に実行されます。これを達成するための正しい方法はありますか?
私が見つけた解決策の1つは、集合get_theme_mod($name)
をPHP $_SESSION["$name"]
に格納することです。セッションが存在する場合は、新しいget_theme_mod($name)
と古い$_SESSION["$name"]
を比較します。それらが同じでない場合は// 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');
}
}
}
しかし、それは少し厄介です、管理者はそれ自身のサイトを訪問するか、または検証を実行するためにrefresh
設定トランスポートを実行する必要があります。