激活和停用挂钩提供了在插件激活或停用时执行操作的方法。
在激活时,插件可以运行例程来添加重写规则,添加自定义数据库表或设置默认选项值。
在停用时,插件可以运行例程来删除临时数据,如缓存和临时文件和目录。
警报:停用挂钩有时与卸载挂钩混淆。 卸载钩子最适合永久删除所有数据,例如删除插件选项和自定义表等。
启用
要设置激活钩子,请使用register_activation_hook()函数:
register_activation_hook( __FILE__, 'pluginprefix_function_to_run' );
停用
要设置停用挂钩,请使用register_deactivation_hook()函数:
register_deactivation_hook( __FILE__, 'pluginprefix_function_to_run' );
每个这些函数中的第一个参数是指您的主插件文件,这是您已经放置插件标题注释的文件。 通常这两个函数将从主插件文件中触发; 但是,如果函数放在任何其他文件中,则必须更新第一个参数以正确指向主插件文件。
##示例
激活钩子最常见的用途之一是当插件注册自定义帖子类型时刷新WordPress的固定链接。 这摆脱了糟糕的404错误。
我们来看一下如何做到这一点的例子:
function pluginprefix_setup_post_types()
{
// register the "book" custom post type
register_post_type( 'book', ['public' => 'true'] );
}
add_action( 'init', 'pluginprefix_setup_post_type' );
function pluginprefix_install()
{
// trigger our function that registers the custom post type
pluginprefix_setup_post_type();
// clear the permalinks after the post type has been registered
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'pluginprefix_install' );
如果您不熟悉注册自定义帖子类型,请不要担心 - 稍后将会介绍。 这个例子很简单,因为它很常见。
使用上面的示例,以下是如何反转此过程并停用插件:
function pluginprefix_deactivation()
{
// our post type will be automatically removed, so no need to unregister it
// clear the permalinks to remove our post type's rules
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'pluginprefix_deactivation' );
有关激活和停用挂钩的更多信息,以下是一些优秀的资源:
- register_activation_hook() 在WordPress的功能参考。
- register_deactivation_hook() 在WordPress的功能参考。