Changeset 60959
- Timestamp:
- 10/17/2025 06:46:42 PM (4 months ago)
- Location:
- trunk
- Files:
-
- 3 edited
-
src/wp-includes/option.php (modified) (2 diffs)
-
tests/phpunit/tests/option/networkOption.php (modified) (1 diff)
-
tests/phpunit/tests/option/option.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/option.php
r60682 r60959 135 135 * Filters the value of all existing options before it is retrieved. 136 136 * 137 * Returning a truthy value from the filter will effectivelyshort-circuit retrieval138 * and return th e passedvalue instead.137 * Returning a value other than false from the filter will short-circuit retrieval 138 * and return that value instead. 139 139 * 140 140 * @since 6.1.0 … … 2038 2038 $pre = apply_filters( "pre_site_option_{$option}", false, $option, $network_id, $default_value ); 2039 2039 2040 /** 2041 * Filters the value of an existing network options before it is retrieved. 2042 * 2043 * Returning a value other than false from the filter will short-circuit retrieval 2044 * and return that value instead. 2045 * 2046 * @since 6.9.0 2047 * 2048 * @param mixed $pre The value to return instead of the network option value. This differs 2049 * from `$default`, which is used as the fallback value in the event 2050 * the option doesn't exist elsewhere in get_network_option(). 2051 * Default false (to skip past the short-circuit). 2052 * @param string $option Name of the option. 2053 * @param int $network_id ID of the network. 2054 * @param mixed $default_value The fallback value to return if the option does not exist. 2055 * Default false. 2056 */ 2057 $pre = apply_filters( 'pre_site_option', $pre, $option, $network_id, $default_value ); 2058 2040 2059 if ( false !== $pre ) { 2041 2060 return $pre; -
trunk/tests/phpunit/tests/option/networkOption.php
r59885 r60959 421 421 $this->assertArrayHasKey( 'ticket_61730_notoption', $network_notoptions_cache_after, 'The option should be in the notoptions cache.' ); 422 422 } 423 424 /** 425 * Assert that the 'pre_site_option' hook is called once per call to get_network_option(). 426 * 427 * @ticket 56870 428 * 429 * @group ms-required 430 * 431 * @covers ::get_network_option 432 */ 433 public function test_get_network_option_should_call_pre_site_option_filter() { 434 $filter = new MockAction(); 435 436 add_filter( 'pre_site_option', array( $filter, 'filter' ) ); 437 438 get_network_option( get_current_network_id(), 'ignored' ); 439 440 $this->assertSame( 1, $filter->get_call_count() ); 441 } 442 443 /** 444 * Verifies that the global 'pre_site_option' filter short-circuits get_network_option(). 445 * 446 * @ticket 56870 447 * 448 * @group ms-required 449 * 450 * @covers ::get_network_option 451 */ 452 public function test_pre_site_option_filter_short_circuits_get_network_option() { 453 $option = 'ticket_56870_pre_site_option_short_circuit'; 454 $network_id = get_current_network_id(); 455 $default_val = 'default-value'; 456 $expected_val = 'filtered-value'; 457 458 $callback = function ( $pre, $opt, $net_id ) use ( $option, $network_id, $expected_val ) { 459 // Ensure the filter is invoked for the requested option and network, then short-circuit. 460 if ( $opt === $option && (int) $net_id === (int) $network_id ) { 461 return $expected_val; 462 } 463 return $pre; 464 }; 465 466 add_filter( 'pre_site_option', $callback, 10, 3 ); 467 468 $actual_val = get_network_option( $network_id, $option, $default_val ); 469 470 // The global pre filter should short-circuit and return $expected_val regardless of storage or default. 471 $this->assertSame( $expected_val, $actual_val ); 472 } 423 473 } -
trunk/tests/phpunit/tests/option/option.php
r59631 r60959 87 87 88 88 /** 89 * Assert that the 'pre_option' hook is called once per call to get_option(). 90 * 89 91 * @ticket 37930 90 92 *
Note: See TracChangeset
for help on using the changeset viewer.