‘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.
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.