在WordPress插件开发中,register_activation_hook()
和 register_deactivation_hook()
函数用于注册插件激活和停用时的钩子函数。以下是如何使用这两个函数的步骤:
1. 注册插件激活钩子
当你想要在插件激活时执行一些操作,比如创建数据库表、设置选项等,你可以使用 register_activation_hook()
函数。这个函数需要两个参数:插件的文件路径和激活时要执行的回调函数。
// 插件文件路径,通常为插件的主文件
$plugin_file = __FILE__;
// 注册激活钩子
register_activation_hook($plugin_file, 'my_plugin_activate');
// 激活时要执行的函数
function my_plugin_activate() {
// 执行插件激活时的操作
// 例如:创建数据库表、设置选项等
}
2. 注册插件停用钩子
同样地,如果你需要在插件停用时执行一些清理操作,比如删除数据库表、移除选项等,你可以使用 register_deactivation_hook()
函数。这个函数的参数与 register_activation_hook()
相同。
// 注册停用钩子
register_deactivation_hook($plugin_file, 'my_plugin_deactivate');
// 停用时执行的函数
function my_plugin_deactivate() {
// 执行插件停用时的操作
// 例如:删除数据库表、移除选项等
}
示例代码
下面是一个简单的示例,展示了如何在插件激活和停用时创建和删除一个数据库表。
<?php
/*
Plugin Name: My Plugin
Description: Example plugin to demonstrate activation and deactivation hooks.
Version: 1.0
Author: Your Name
*/
// 插件文件路径
$plugin_file = __FILE__;
// 注册激活钩子
register_activation_hook($plugin_file, 'my_plugin_activate');
// 注册停用钩子
register_deactivation_hook($plugin_file, 'my_plugin_deactivate');
// 激活插件时创建数据库表
function my_plugin_activate() {
global $wpdb;
$table_name = $wpdb->prefix . 'my_custom_table';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
name tinytext NOT NULL,
text text NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
// 停用插件时删除数据库表
function my_plugin_deactivate() {
global $wpdb;
$table_name = $wpdb->prefix . 'my_custom_table';
$wpdb->query("DROP TABLE IF EXISTS $table_name");
}
在这个示例中,当插件被激活时,它会创建一个名为 my_custom_table
的数据库表。当插件被停用时,这个表会被删除。记得在生产环境中谨慎使用 DROP TABLE
语句,因为它会永久删除数据。