php - wordpress 插件激活/停用功能未触发
问题描述
我必须为 wordpress 做一些目录插件,但我已经遇到了仅激活/停用它的麻烦。这是我的代码。它应该工作。这段代码只是测试激活/停用的代码,但考虑到文档,这应该可以工作,似乎我找不到合理的论据,为什么这没有触发。有人可以这么好心看看代码吗?提前致谢
<?php
register_activation_hook( __FILE__, 'plus8k_activate' );
register_deactivation_hook( __FILE__, 'plus8k_deactivate' );
function plus8k_activate()
{
global $wpdb;
$table_name = $wpdb->prefix . "plus8k_products";
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name tinytext NOT NULL,
description text NOT NULL,
meta tinytext NOT NULL,
content text NOT NULL,
time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
status bool DEFAULT 'true' NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
$table_name = $wpdb->prefix . "plus8k_media";
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name tinytext NOT NULL,
caption text NOT NULL,
location tinytext NOT NULL,
time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
prod_id mediumint(9) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (prod_id)
REFERENCES " . $wpdb->prefix . "plus8k_products(id)
ON DELETE CASCADE
) $charset_collate;";
dbDelta( $sql );
}
function plus8k_deactivate()
{
global $wpdb;
$table_name = $wpdb->prefix . "plus8k_products";
$charset_collate = $wpdb->get_charset_collate();
$sql = "DROP TABLE $table_name";
dbDelta( $sql );
$table_name = $wpdb->prefix . "plus8k_media";
$sql = "DROP TABLE $table_name";
dbDelta( $sql );
}
例如,如果我删除函数并从 plus8k_activate 外部函数中复制代码,则会创建表。我不知道为什么注册的钩子不会触发 plus8k_activate 函数。
编辑!激活无效,因为 sql 中的错误(布尔默认值必须为 1 或 0,它无法识别真/假)
现在激活工作,但停用虽然 sqls 没问题,但我已经用 phpmyadmin 尝试过。需要弄清楚这一点。
解决方案
确保从插件的主文件(如sample-plugin/sample.php
)调用此函数。
或者尝试匿名函数回调以确保您没有进行任何拼写错误等。
register_deactivation_hook(__FILE__, function () {
//something here like
die('today');
});
当您停用插件时,此代码必须运行。请从那里获取它,在其中添加您的功能。
推荐阅读
- php - Update user profile Laravel
- bash - 如何使用 bash 脚本将 Ram 写入文件
- python - Boto3 上传到 s3 存储桶
- cmd - 查找当前目录中所有包含“string1 string2”的文件*string*.dat
- excel - excel vba 2147221080 - 重新打开后端/数据工作簿的自动化错误
- alfresco - 运行 Alfresco 时出错“无法在此服务器上找到 Alfresco 存储库。”
- mongodb - 如何使用spring java mongo存储库做嵌入式文档
- go - Blitting FBO 颜色附件
- swift - Swift 协议行为
- python - pyqt5 组合框选定项与另一个窗口共享(信号/插槽)