‘pre_update_option’ is a WordPress PHP filter that allows you to modify an option’s value before it is potentially serialized and updated in the database.
Table of contents
Usage
To use this filter, you need to create a custom function that will be hooked to the pre_update_option filter. Here’s a code example:
function my_custom_pre_update_option( $value, $option, $old_value ) {
// Your custom code here
return $value;
}
add_filter( 'pre_update_option', 'my_custom_pre_update_option', 10, 3 );
Parameters
- $value (mixed)
- The new, unserialized option value.
- $option (string)
- Name of the option.
- $old_value (mixed)
- The old option value.
Examples
Sanitizing input before saving
function sanitize_my_option( $value, $option, $old_value ) {
if ( 'my_option' === $option ) {
return sanitize_text_field( $value );
}
return $value;
}
add_filter( 'pre_update_option', 'sanitize_my_option', 10, 3 );
In this example, the custom function sanitize_my_option checks if the option being updated is my_option. If it is, it sanitizes the new value using the sanitize_text_field() function before saving it.
Preventing an option from being updated
function prevent_option_update( $value, $option, $old_value ) {
if ( 'protected_option' === $option ) {
return $old_value;
}
return $value;
}
add_filter( 'pre_update_option', 'prevent_option_update', 10, 3 );
In this example, the prevent_option_update function checks if the option being updated is protected_option. If it is, the old value is returned instead, effectively preventing the option from being updated.
Converting an option value to uppercase
function uppercase_option_value( $value, $option, $old_value ) {
if ( 'uppercase_option' === $option ) {
return strtoupper( $value );
}
return $value;
}
add_filter( 'pre_update_option', 'uppercase_option_value', 10, 3 );
In this example, the uppercase_option_value function checks if the option being updated is uppercase_option. If it is, the new value is converted to uppercase using the strtoupper() function before saving.
Setting a minimum value for a numeric option
function set_min_value( $value, $option, $old_value ) {
if ( 'min_value_option' === $option && $value < 10 ) {
return 10;
}
return $value;
}
add_filter( 'pre_update_option', 'set_min_value', 10, 3 );
In this example, the set_min_value function checks if the option being updated is min_value_option. If it is and the new value is less than 10, the value is set to 10 before saving.
Transforming an option value to a JSON string
function transform_to_json( $value, $option, $old_value ) {
if ( 'json_option' === $option ) {
return json_encode( $value );
}
return $value;
}
add_filter( 'pre_update_option', 'transform_to_json', 10, 3 );
In this example, the `transform_to_json` function checks if the option being updated is `json_option`. If it is, the new value is transformed into a JSON string using the `json_encode()` function before saving.