Plugins: Add a current_priority()
method to WP_Hook
.
This allows plugins to determine the currently running priority of a filter. Merges [39430] to the 4.7 branch. Fixes #39007. git-svn-id: https://develop.svn.wordpress.org/branches/4.7@39431 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
2c907c7248
commit
2c8812f524
@ -351,6 +351,22 @@ final class WP_Hook implements Iterator, ArrayAccess {
|
|||||||
$this->nesting_level--;
|
$this->nesting_level--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the current priority level of the currently running iteration of the hook.
|
||||||
|
*
|
||||||
|
* @since 4.7.0
|
||||||
|
* @access public
|
||||||
|
*
|
||||||
|
* @return int|false If the hook is running, return the current priority level. If it isn't running, return false.
|
||||||
|
*/
|
||||||
|
public function current_priority() {
|
||||||
|
if ( false === current( $this->iterations ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return current( current( $this->iterations ) );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalizes filters set up before WordPress has initialized to WP_Hook objects.
|
* Normalizes filters set up before WordPress has initialized to WP_Hook objects.
|
||||||
*
|
*
|
||||||
|
@ -347,4 +347,37 @@ class Tests_Filters extends WP_UnitTestCase {
|
|||||||
|
|
||||||
$this->assertSame( $val, apply_filters_deprecated( 'tests_apply_filters_deprecated', array( $val ), '4.6' ) );
|
$this->assertSame( $val, apply_filters_deprecated( 'tests_apply_filters_deprecated', array( $val ), '4.6' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private $current_priority;
|
||||||
|
/**
|
||||||
|
* @ticket 39007
|
||||||
|
*/
|
||||||
|
public function test_current_priority() {
|
||||||
|
add_action( 'test_current_priority', array( $this, '_current_priority_action' ), 99 );
|
||||||
|
do_action( 'test_current_priority' );
|
||||||
|
remove_action( 'test_current_priority', array( $this, '_current_priority_action' ), 99 );
|
||||||
|
|
||||||
|
$this->assertSame( 99, $this->current_priority );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function _current_priority_action() {
|
||||||
|
global $wp_filter;
|
||||||
|
$this->current_priority = $wp_filter[ current_filter() ]->current_priority();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 39007
|
||||||
|
*/
|
||||||
|
public function test_other_priority() {
|
||||||
|
add_action( 'test_current_priority', array( $this, '_other_priority_action' ), 99 );
|
||||||
|
do_action( 'test_current_priority' );
|
||||||
|
remove_action( 'test_current_priority', array( $this, '_other_priority_action' ), 99 );
|
||||||
|
|
||||||
|
$this->assertSame( false, $this->current_priority );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function _other_priority_action() {
|
||||||
|
global $wp_filter;
|
||||||
|
$this->current_priority = $wp_filter[ 'the_content' ]->current_priority();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user