如果插件和主题使用相同的钩子,哪个钩子回调优先?

时间:2013-10-24 作者:Adi

例如,如果主题和插件使用相同的动作挂钩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 );

结束

相关推荐

如何在插件的uninstall.php中删除自定义分类术语?

我正在编写插件的卸载。php文件,并希望它删除插件自定义分类法中创建的任何术语。在插件的卸载中。我正在使用的php文件:// Delete all custom terms for this taxonomy $terms = get_terms(\'custom_taxonomy\'); foreach ($terms as $term) { wp_delete_term( $term->ID, \'custom_taxonomy\' ); } 问