函数文档

apply_filters_deprecated()

💡 云策文档标注

概述

apply_filters_deprecated() 函数用于触发已弃用的过滤器钩子,替代 apply_filters() 调用,并生成弃用通知。它确保向后兼容性,同时引导开发者迁移到新钩子。

关键要点

  • 当过滤器钩子被弃用时,应使用 apply_filters_deprecated() 替代 apply_filters(),以触发弃用通知并执行原始钩子。
  • 参数 $args 必须是一个数组,包含传递给原始 apply_filters() 的所有值,例如 $value 和 $extra_arg。
  • 函数内部检查钩子是否存在,若不存在则直接返回 $args[0];否则调用 _deprecated_hook() 并应用 apply_filters_ref_array()。
  • 相关函数包括 _deprecated_hook()、has_filter() 和 apply_filters_ref_array(),用于处理弃用逻辑和过滤器应用。

代码示例

// Old filter.
return apply_filters( 'wpdocs_filter', $value, $extra_arg );

// Deprecated.
return apply_filters_deprecated( 'wpdocs_filter', array( $value, $extra_arg ), '4.9.0', 'wpdocs_new_filter' );

注意事项

  • 确保 $args 参数正确传递所有原始参数,以避免数据丢失或错误。
  • 弃用通知有助于开发者识别并更新代码到新钩子,提高代码维护性。

📄 原文内容

Fires functions attached to a deprecated filter hook.

Description

When a filter hook is deprecated, the apply_filters() call is replaced with apply_filters_deprecated() , which triggers a deprecation notice and then fires the original filter hook.

Note: the value and extra arguments passed to the original apply_filters() call must be passed here to $args as an array. For example:

// Old filter.
return apply_filters( 'wpdocs_filter', $value, $extra_arg );

// Deprecated.
return apply_filters_deprecated( 'wpdocs_filter', array( $value, $extra_arg ), '4.9.0', 'wpdocs_new_filter' );

See also

Parameters

$hook_namestringrequired
The name of the filter hook.
$argsarrayrequired
Array of additional function arguments to be passed to apply_filters() .

More Arguments from apply_filters( … $args )

Additional parameters to pass to the callback functions.

$versionstringrequired
The version of WordPress that deprecated the hook.
$replacementstringoptional
The hook that should have been used. Default empty.
$messagestringoptional
A message regarding the change. Default empty.

Return

mixed The filtered value after all hooked functions are applied to it.

Source

function apply_filters_deprecated( $hook_name, $args, $version, $replacement = '', $message = '' ) {
	if ( ! has_filter( $hook_name ) ) {
		return $args[0];
	}

	_deprecated_hook( $hook_name, $version, $replacement, $message );

	return apply_filters_ref_array( $hook_name, $args );
}

Changelog

Version Description
4.6.0 Introduced.