我正在尝试使用面向对象编程创建新的WordPress插件。我想在插件激活时创建数据库并在插件删除时删除数据库。下面是我的代码它不适用于我。我有两个文件,一个是主插件文件另一个是插件函数包含文件。
主文件代码如下:
// Global Variables (Manage Globally In Scope).
const body = document.querySelector('body') // Body.
let ygap = 0 // Y Offset.
// On Mount (Call When Mounting).
const onModalMount = () => {
// Y Gap.
ygap = window.pageYOffset || document.documentElement.scrollTop
// Fix Body.
body.style.position = 'fixed'
// Apply Y Offset To Body Top.
body.style.top = `${-ygap}px`
}
// On Dismount (Call When Dismounting).
const onModalDismount = () => {
// Unfix Body.
body.style.position = 'relative'
// Reset Top Offset.
body.style.top = '0'
// Reset Scroll.
window.scrollTo(0, ygap)
}
包括以下文件代码:
<?php
/*
Plugin Name: Test Reviews1
Plugin URI: https://test.in/
Description: This Test Plugin.
Version: 1.0
Author: Test
Author URI: https://test.in/
License: GPLv2 or later
*/
new test_plugin();
class test_plugin{
public function __construct(){
$this->plugin_dir = plugins_url( '' , __FILE__ );
include('inc/inc.php');
$this->security = new hidemysite_security();
}
}
你能帮助我吗?
答案 0 :(得分:0)
$wpdb->prefix
此varibale未定义。这就是为什么在停用插件时不删除表的原因。
按照以下示例说明如何定义前缀变量:
//定义了一个函数
function cf_core_get_table_prefix() {
global $wpdb;
return $wpdb->base_prefix;
}
//如何使用上述功能
$table_prefix = cf_core_get_table_prefix();
$wpdb->query( "DROP TABLE {$table_prefix}md_things" );
定义你的激活功能
global $wpdb;
$charset_collate = cf_core_set_charset();
$table_prefix = cf_core_get_table_prefix();
$sql[] ="CREATE TABLE {$table_prefix}cf_contact
( id int(10) unsigned NOT NULL AUTO_INCREMENT,
name VARCHAR( 60 ) NOT NULL,
email VARCHAR( 60 ) NOT NULL,
mob VARCHAR( 60 ) NOT NULL,
msg VARCHAR( 60 ) NOT NULL,
PRIMARY KEY (`id`)
)
{$charset_collate} AUTO_INCREMENT=1";
dbDelta($sql);