Options, Meta APIs: Check if the gmt_offset value is numeric in sanitize_option().
When saving the settings via the admin UI, the default value for any options not passed in the current `$_POST` request is set to `null` in `wp-admin/options.php`. Some options, e.g. `blog_public`, then rely on `null` being passed to `update_option()` to determine whether the value was changed or not.
This commit resolves a PHP 8.1 deprecation notice when saving the `gmt_offset` option without any changes:
{{{
Deprecated: preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated
}}}
Includes a similar fix for the `blog_charset` option.
Follow-up to [4112], [4329], [5541], [21849].
Props adi3890, dhrupo, hrdelwar, hasanmisbah, oglekler, mukesh27, SergeyBiryukov.
Fixes #57728.
Built from https://develop.svn.wordpress.org/trunk@56132
git-svn-id: http://core.svn.wordpress.org/trunk@55644 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
@@ -4883,7 +4883,11 @@ function sanitize_option( $option, $value ) {
|
||||
break;
|
||||
|
||||
case 'blog_charset':
|
||||
$value = preg_replace( '/[^a-zA-Z0-9_-]/', '', $value ); // Strips slashes.
|
||||
if ( is_string( $value ) ) {
|
||||
$value = preg_replace( '/[^a-zA-Z0-9_-]/', '', $value ); // Strips slashes.
|
||||
} else {
|
||||
$value = '';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'blog_public':
|
||||
@@ -4918,7 +4922,11 @@ function sanitize_option( $option, $value ) {
|
||||
break;
|
||||
|
||||
case 'gmt_offset':
|
||||
$value = preg_replace( '/[^0-9:.-]/', '', $value ); // Strips slashes.
|
||||
if ( is_numeric( $value ) ) {
|
||||
$value = preg_replace( '/[^0-9:.-]/', '', $value ); // Strips slashes.
|
||||
} else {
|
||||
$value = '';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'siteurl':
|
||||
|
||||
Reference in New Issue
Block a user