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

This was missed in [38910].

Merge of [39382] to the 4.7 branch.

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

git-svn-id: https://develop.svn.wordpress.org/branches/4.7@39383 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Dominik Schilling (ocean90) 2016-11-30 21:31:38 +00:00
parent 859f180baf
commit 60e9d045e7
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
*/