Ticket #14994: 14994.3.diff
File 14994.3.diff, 3.7 KB (added by , 11 years ago) |
---|
-
src/wp-includes/plugin.php
340 340 } 341 341 342 342 /** 343 * Retrieve the name of the current action. 344 * 345 * @since 3.9.0 346 * @uses current_filter(); 347 * 348 * @return string Hook name of the current action. 349 */ 350 function current_action() { 351 return current_filter(); 352 } 353 354 /** 355 * Retrieve the name of a filter currently being processed. 356 * 357 * The function current_filter() only returns the most recent filter or action 358 * being executed. did_action() returns true once the action is initially 359 * processed. This function allows detection for any filter currently being 360 * executed (despite not being the most recent filter to fire, in the case of 361 * hooks called from hook callbacks) to be verified. 362 * 363 * @since 3.9.0 364 * @see current_filter() 365 * @see did_action() 366 * 367 * @param string $filter Optional. Filter to check. Defaults to null, which checks if any filter is currently being run. 368 * 369 * @global array $wp_current_filter 370 * 371 * @return bool Whether the filter is currently in the stack 372 */ 373 function doing_filter( $filter = null ) { 374 global $wp_current_filter; 375 376 if ( null === $filter ) { 377 return empty( $wp_current_filter ); 378 } 379 380 return in_array( $filter, $wp_current_filter ); 381 } 382 383 /** 384 * Retrieve the name of an action currently being processed. 385 * 386 * @since 3.9.0 387 * @uses doing_filter() 388 * 389 * @param string $action Optional. Action to check. Defaults to null, which checks if any action is currently being run. 390 * 391 * @return bool Whether the action is currently in the stack. 392 */ 393 function doing_action( $action = null ) { 394 return doing_filter( $action ); 395 } 396 397 /** 343 398 * Hooks a function on to a specific action. 344 399 * 345 400 * Actions are the hooks that the WordPress core launches at specific points -
tests/phpunit/tests/actions.php
256 256 function action_self_removal() { 257 257 remove_action( 'test_action_self_removal', array( $this, 'action_self_removal' ) ); 258 258 } 259 260 /** 261 * Make sure current_action() behaves as current_filter() 262 * 263 * @ticket 14994 264 */ 265 function test_current_action() { 266 global $wp_current_filter; 267 $wp_current_filter[] = 'first'; 268 $wp_current_filter[] = 'second'; // Let's say a second action was invoked. 269 270 $this->assertEquals( 'second', current_action() ); 271 } 272 273 /** 274 * @ticket 14994 275 */ 276 function test_doing_filter() { 277 global $wp_current_filter; 278 $wp_current_filter = array(); // Set to an empty array first 279 280 $this->assertTrue( doing_filter() ); // No filter is passed in, and no filter is being processed 281 $this->assertFalse( doing_filter( 'testing' ) ); // Filter is passed in but not being processed 282 283 $wp_current_filter[] = 'testing'; 284 285 $this->assertTrue( doing_filter( 'testing') ); // Filter is passed in and is being processed 286 $this->assertFalse( doing_filter( 'something_else' ) ); // Filter is passed in but not being processed 287 } 288 289 /** 290 * @ticket 14994 291 */ 292 function test_doing_action() { 293 global $wp_current_filter; 294 $wp_current_filter = array(); // Set to an empty array first 295 296 $this->assertTrue( doing_action() ); // No action is passed in, and no filter is being processed 297 $this->assertFalse( doing_action( 'testing' ) ); // Action is passed in but not being processed 298 299 $wp_current_filter[] = 'testing'; 300 301 $this->assertTrue( doing_action( 'testing') ); // Action is passed in and is being processed 302 $this->assertFalse( doing_action( 'something_else' ) ); // Action is passed in but not being processed 303 } 259 304 }