启用 / 停用 Hooks

激活和停用挂钩提供了在插件激活或停用时执行操作的方法。

在激活时,插件可以运行例程来添加重写规则,添加自定义数据库表或设置默认选项值。

在停用时,插件可以运行例程来删除临时数据,如缓存和临时文件和目录。

警报:停用挂钩有时与卸载挂钩混淆。 卸载钩子最适合永久删除所有数据,例如删除插件选项和自定义表等。

启用

要设置激活钩子,请使用 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的功能参考。
下一节:当您卸载插件时,可能需要对卸载的插件进行一些清理。