From 3d45eff577ddf6f5f5d3ba0989c4855d74727ba9 Mon Sep 17 00:00:00 2001 From: Andrew Nacin Date: Tue, 4 Mar 2014 07:01:45 +0000 Subject: [PATCH] Add a pre_set_theme_mod_$name filter to set_theme_mod(). This is modeled after pre_update_option_$option in update_option() and pre_set_transient_$transient in set_transient(). props obenland. fixes #14721. git-svn-id: https://develop.svn.wordpress.org/trunk@27393 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/theme.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/theme.php b/src/wp-includes/theme.php index 76aa9550ae..473b9956cf 100644 --- a/src/wp-includes/theme.php +++ b/src/wp-includes/theme.php @@ -913,8 +913,21 @@ function get_theme_mod( $name, $default = false ) { */ function set_theme_mod( $name, $value ) { $mods = get_theme_mods(); + $old_value = $mods[ $name ]; - $mods[ $name ] = $value; + /** + * Filter the theme mod value on save. + * + * The dynamic portion of the hook name, $name, refers to the key name of + * the modification array. For example, 'header_textcolor', 'header_image', + * and so on depending on the theme options. + * + * @since 3.9.0 + * + * @param string $value The new value of the theme mod. + * @param string $old_value The current value of the theme mod. + */ + $mods[ $name ] = apply_filters( "pre_set_theme_mod_$name", $value, $old_value ); $theme = get_option( 'stylesheet' ); update_option( "theme_mods_$theme", $mods );