启用和禁用钩子提供了在插件被启用或禁用时执行动作的方法。
- 在启用时,插件可以运行例程来添加重写规则、添加自定义数据库表或设置默认选项值。
- 在禁用时,插件可以运行例程来删除临时数据,例如缓存和临时文件或目录。
启用
要设置启用钩子,请使用register_activation_hook()函数:
register_activation_hook( __FILE__, 'pluginprefix_function_to_run' );
禁用
要设置禁用钩子,请使用register_deactivation_hook()函数:
register_deactivation_hook( __FILE__, 'pluginprefix_function_to_run' );
每个函数中的第一个参数都指向主插件文件,该文件中放置了插件页头注释。通常这两个函数将从主插件文件中触发,但是,如果函数放在任何其他文件中,则必须更新第一个参数以正确指向主插件文件。
实例
启用钩子最常见的用途之一是刷新WordPress固定链接(刷新路由),当插件注册自定义文章类型时,这消除了令人讨厌的404错误。
让我们来看一个如何做到这一点的示例:
/** * Register the "book" custom post type */ function pluginprefix_setup_post_type() { register_post_type( 'book', ['public' => true ] ); } add_action( 'init', 'pluginprefix_setup_post_type' ); /** * Activate the plugin. */ function pluginprefix_activate() { // Trigger our function that registers the custom post type plugin. pluginprefix_setup_post_type(); // Clear the permalinks after the post type has been registered. flush_rewrite_rules(); } register_activation_hook( __FILE__, 'pluginprefix_activate' );
如果你不熟悉注册自定义文章类型,别担心,这将在后面介绍。之所以使用这个例子,是因为它非常常见。
使用上面的示例,以下是如何反转此过程在禁用插件时:
/** * Deactivation hook. */ function pluginprefix_deactivate() { // Unregister the post type, so the rules are no longer in memory. unregister_post_type( 'book' ); // Clear the permalinks to remove our post type's rules from the database. flush_rewrite_rules(); } register_deactivation_hook( __FILE__, 'pluginprefix_deactivate' );
有关启用和禁用挂钩的更多信息,请参阅以下优秀资源: