The pre_option_{$option} WordPress PHP filter allows you to modify the value of an existing option before it is retrieved. The dynamic part of the hook name, $option, refers to the option name. If the filter returns a value other than false, the retrieval process will be short-circuited, and the returned value will be used instead.
Usage
add_filter('pre_option_' . $option, 'your_custom_function', 10, 3);
function your_custom_function($pre_option, $option, $default_value) {
// your custom code here
return $pre_option;
}
Parameters
$pre_option(mixed): The value to return instead of the option value. This is different from$default_value, which is used as the fallback value if the option doesn’t exist elsewhere inget_option(). Default isfalse(to skip past the short-circuit).$option(string): Option name.$default_value(mixed): The fallback value to return if the option does not exist. Default isfalse.
More information
See WordPress Developer Resources: pre_option_{$option}
Examples
Changing site title
In this example, we’ll change the site title before it is retrieved.
add_filter('pre_option_blogname', 'change_site_title', 10, 3);
function change_site_title($pre_option, $option, $default_value) {
$new_title = "New Site Title";
return $new_title;
}
Change admin email
In this example, we’ll change the admin email before it is retrieved.
add_filter('pre_option_admin_email', 'change_admin_email', 10, 3);
function change_admin_email($pre_option, $option, $default_value) {
$new_email = "[email protected]";
return $new_email;
}
Change timezone
In this example, we’ll change the timezone before it is retrieved.
add_filter('pre_option_timezone_string', 'change_timezone', 10, 3);
function change_timezone($pre_option, $option, $default_value) {
$new_timezone = "America/New_York";
return $new_timezone;
}
Change date format
In this example, we’ll change the date format before it is retrieved.
add_filter('pre_option_date_format', 'change_date_format', 10, 3);
function change_date_format($pre_option, $option, $default_value) {
$new_format = "d/m/Y";
return $new_format;
}
Change posts per page
In this example, we’ll change the number of posts displayed per page before it is retrieved.
add_filter('pre_option_posts_per_page', 'change_posts_per_page', 10, 3);
function change_posts_per_page($pre_option, $option, $default_value) {
$new_posts_per_page = 12;
return $new_posts_per_page;
}