The filter_default_option() WordPress PHP function filters the default value for a given option. This function comes into play for settings that register a default setting in register_setting()
.
Usage
Here’s a generic example of using the filter_default_option() function:
add_filter( 'default_option_my_option', 'my_option_default', 10, 3 ); function my_option_default( $default_value, $option, $passed_default ) { if ( $passed_default ) { return $default_value; } else { return 'My Default Value'; } }
This code adds a filter to the default_option_my_option
hook. The filter function my_option_default
will return the passed default value if one exists, otherwise it will return ‘My Default Value’.
Parameters
- $default_value (mixed): The existing default value to return.
- $option (string): The name of the option.
- $passed_default (bool): A boolean indicating if
get_option()
was passed a default value.
More information
See WordPress Developer Resources: filter_default_option()
This function is typically used in conjunction with register_setting()
and get_option()
.
Examples
Adding a Default Value to a New Option
add_filter( 'default_option_my_new_option', 'my_new_option_default', 10, 3 ); function my_new_option_default( $default_value, $option, $passed_default ) { return $passed_default ? $default_value : 'New Default Value'; }
This code sets ‘New Default Value’ as the default for the my_new_option
setting if no default value was passed.
Change Default Value Based on Condition
add_filter( 'default_option_theme_color', 'theme_color_default', 10, 3 ); function theme_color_default( $default_value, $option, $passed_default ) { return ( 'dark' === get_option('site_mode') ) ? 'black' : 'white'; }
This code changes the default theme color based on the site_mode
setting. If site_mode
is ‘dark’, the default theme color will be ‘black’. Otherwise, it will be ‘white’.
Handling Numeric Options
add_filter( 'default_option_posts_per_page', 'posts_per_page_default', 10, 3 ); function posts_per_page_default( $default_value, $option, $passed_default ) { return $passed_default ? $default_value : 10; }
In this code, if no default value was passed for posts_per_page
, it will be set to 10.
Setting Default Values for Array Options
add_filter( 'default_option_theme_settings', 'theme_settings_default', 10, 3 ); function theme_settings_default( $default_value, $option, $passed_default ) { return $passed_default ? $default_value : array('color' => 'blue', 'font' => 'Arial'); }
For the theme_settings
option, if no default value was passed, the default will be an array with ‘color’ set to ‘blue’ and ‘font’ set to ‘Arial’.