Options: Pass the `$passed_default` parameter to the `'default_option_{$option}` filter in `add_option()`.

This was missed in [38910].

Props joehoyle, lucasstark.
See #38176.
Fixes #38930.

git-svn-id: https://develop.svn.wordpress.org/trunk@39382 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Dominik Schilling (ocean90) 2016-11-30 21:21:21 +00:00
parent a35a3cf952
commit 13fd32cc20
2 changed files with 13 additions and 1 deletions

View File

@ -421,7 +421,7 @@ function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' )
$notoptions = wp_cache_get( 'notoptions', 'options' );
if ( !is_array( $notoptions ) || !isset( $notoptions[$option] ) )
/** This filter is documented in wp-includes/option.php */
if ( apply_filters( 'default_option_' . $option, false, $option ) !== get_option( $option ) )
if ( apply_filters( 'default_option_' . $option, false, $option, false ) !== get_option( $option ) )
return false;
$serialized_value = maybe_serialize( $value );

View File

@ -61,6 +61,18 @@ class Tests_Option_Registration extends WP_UnitTestCase {
$this->assertEquals( 'Fuck Leukemia', get_option( 'test_default', 'Fuck Leukemia' ) );
}
/**
* @ticket 38930
*/
public function test_add_option_with_no_options_cache() {
register_setting( 'test_group', 'test_default', array(
'default' => 'My Default :)',
));
wp_cache_delete( 'notoptions', 'options' );
$this->assertTrue( add_option( 'test_default', 'hello' ) );
$this->assertEquals( 'hello', get_option( 'test_default' ) );
}
/**
* @expectedDeprecated register_setting
*/