Clarify the return value of has_filter() and has_action(). It returns a boolean if only the first argument is specified. If the second argument is specified, it returns false or an integer, which means it may return a non-boolean value that evaluates to false (so, 0), so you should take care to use the === operator.

Correct the function definition of remove_filter() and remove_action(), which 'accepted' an $accepted_args argument, but did not require or use it.

fixes #19417.



git-svn-id: https://develop.svn.wordpress.org/trunk@21288 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Nacin 2012-07-20 13:54:42 +00:00
parent 11e877bcb8
commit 50cd56f8fd
1 changed files with 13 additions and 8 deletions

View File

@ -80,8 +80,11 @@ function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1)
* @global array $wp_filter Stores all of the filters * @global array $wp_filter Stores all of the filters
* *
* @param string $tag The name of the filter hook. * @param string $tag The name of the filter hook.
* @param callback $function_to_check optional. If specified, return the priority of that function on this hook or false if not attached. * @param callback $function_to_check optional.
* @return int|boolean Optionally returns the priority on that hook for the specified function. * @return mixed If $function_to_check is omitted, returns boolean for whether the hook has anything registered.
* When checking a specific function, the priority of that hook is returned, or false if the function is not attached.
* When using the $function_to_check argument, this function may return a non-boolean value that evaluates to false
* (e.g.) 0, so use the === operator for testing the return value.
*/ */
function has_filter($tag, $function_to_check = false) { function has_filter($tag, $function_to_check = false) {
global $wp_filter; global $wp_filter;
@ -251,7 +254,7 @@ function apply_filters_ref_array($tag, $args) {
* @param int $accepted_args optional. The number of arguments the function accepts (default: 1). * @param int $accepted_args optional. The number of arguments the function accepts (default: 1).
* @return boolean Whether the function existed before it was removed. * @return boolean Whether the function existed before it was removed.
*/ */
function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) { function remove_filter( $tag, $function_to_remove, $priority = 10 ) {
$function_to_remove = _wp_filter_build_unique_id($tag, $function_to_remove, $priority); $function_to_remove = _wp_filter_build_unique_id($tag, $function_to_remove, $priority);
$r = isset($GLOBALS['wp_filter'][$tag][$priority][$function_to_remove]); $r = isset($GLOBALS['wp_filter'][$tag][$priority][$function_to_remove]);
@ -494,8 +497,11 @@ function do_action_ref_array($tag, $args) {
* @see has_filter() has_action() is an alias of has_filter(). * @see has_filter() has_action() is an alias of has_filter().
* *
* @param string $tag The name of the action hook. * @param string $tag The name of the action hook.
* @param callback $function_to_check optional. If specified, return the priority of that function on this hook or false if not attached. * @param callback $function_to_check optional.
* @return int|boolean Optionally returns the priority on that hook for the specified function. * @return mixed If $function_to_check is omitted, returns boolean for whether the hook has anything registered.
* When checking a specific function, the priority of that hook is returned, or false if the function is not attached.
* When using the $function_to_check argument, this function may return a non-boolean value that evaluates to false
* (e.g.) 0, so use the === operator for testing the return value.
*/ */
function has_action($tag, $function_to_check = false) { function has_action($tag, $function_to_check = false) {
return has_filter($tag, $function_to_check); return has_filter($tag, $function_to_check);
@ -515,11 +521,10 @@ function has_action($tag, $function_to_check = false) {
* @param string $tag The action hook to which the function to be removed is hooked. * @param string $tag The action hook to which the function to be removed is hooked.
* @param callback $function_to_remove The name of the function which should be removed. * @param callback $function_to_remove The name of the function which should be removed.
* @param int $priority optional The priority of the function (default: 10). * @param int $priority optional The priority of the function (default: 10).
* @param int $accepted_args optional. The number of arguments the function accepts (default: 1).
* @return boolean Whether the function is removed. * @return boolean Whether the function is removed.
*/ */
function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1) { function remove_action( $tag, $function_to_remove, $priority = 10 ) {
return remove_filter($tag, $function_to_remove, $priority, $accepted_args); return remove_filter( $tag, $function_to_remove, $priority );
} }
/** /**