例如,如果主题和插件使用相同的动作挂钩comment_form
主题和插件都使用。那么,先叫哪一个?与主题挂钩关联的函数或与插件挂钩关联的函数。
如果插件和主题使用相同的钩子,哪个钩子回调优先?
2 个回复
SO网友:Chip Bennett
动作挂钩只是一个队列点,它在PHP执行过程中的特定点起作用:回调通过add_action()
调用,然后依次处理队列中的所有内容:
add_action( \'hook_name\', \'callback_name\', $priority, $number_of_args );
过滤器挂钩是一个类似的队列点,只作用于特定的数据位,它可以是字符串、数组、整数或其他任何形式。与操作一样,回调通过add_filter()
调用,然后依次处理队列中的所有内容。add_filter( \'hook_name\', \'callback_name\', $priority, $number_of_args );
如果需要确保一个回调比另一个回调更早或更晚得到处理,那么需要确保两个回调具有不同的优先级。数字越低,优先级越高,执行越早。默认优先级为10
, 因此,任何添加了优先级11
将在默认值之后执行,并且添加了优先级为的任何内容9
将在默认值之前执行。因此,是的:主题和插件都可以向同一个操作/过滤器挂钩添加操作或过滤器回调,而不会产生冲突。
SO网友:Maruti Mohanty
每一个action/filter
挂钩具有优先级参数(the third parameter). 其默认值为10
, 值越小,调用越早
喜欢
add_action( $tag, $function_to_add, $priority, $accepted_args );
add_filter( $tag, $function_to_add, $priority, $accepted_args );
结束