1. 首页
  2. WordPress 函数手册

has_filter()

has_filter( string $tag, callable|bool $function_to_check = false )

检查是否为挂钩注册了任何筛选器。
Check if any filter has been registered for a hook.

目录锚点:#参数#返回#源码#笔记


参数(Parameters)

参数 类型 必填 说明
$tag (string) 必需 筛选器挂钩的名称。
$function_to_check (callable | bool) 可选 要检查的回调。

返回(Return)

(false|int)如果省略$function_to_check,则返回布尔值以确定钩子是否已注册任何内容。检查特定函数时,将返回该挂钩的优先级,如果未附加该函数,则返回false。使用$function_to_check参数时,此函数可能返回一个计算结果为false(false|int)0的非布尔值,因此使用==运算符测试返回值。


源码(Source)

/**
 * Check if any filter has been registered for a hook.
 *
 * @since 2.5.0
 *
 * @global array $wp_filter Stores all of the filters.
 *
 * @param string        $tag               The name of the filter hook.
 * @param callback|bool $function_to_check Optional. The callback to check for. Default false.
 * @return false|int 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) {
	// Don't reset the internal array pointer
	$wp_filter = $GLOBALS['wp_filter'];

	$has = ! empty( $wp_filter[ $tag ] );

	// Make sure at least one priority has a filter callback
	if ( $has ) {
		$exists = false;
		foreach ( $wp_filter[ $tag ] as $callbacks ) {
			if ( ! empty( $callbacks ) ) {
				$exists = true;
				break;
			}
		}

		if ( ! $exists ) {
			$has = false;
		}
	}

	if ( false === $function_to_check || false === $has )
		return $has;

	if ( !$idx = _wp_filter_build_unique_id($tag, $function_to_check, false) )
		return false;

	foreach ( (array) array_keys($wp_filter[$tag]) as $priority ) {
		if ( isset($wp_filter[$tag][$priority][$idx]) )
			return $priority;
	}

	return false;
}
更新版本 源码位置 使用 被使用
2.5.0 wp-includes/plugin.php:133 18 0

笔记(Notes)

基本示例
add_filter()调用同一个wp_filter_build_unique_id()函数,并将method/function参数重新分配给索引数组。

has_filter() 为WP2原创文章,链接:https://www.wp2.cn/functions/has_filter/

发表评论

您的电子邮箱地址不会被公开。