我正在尝试创建一个插件,该插件在激活后需要创建一个表。下面是我用来制作插件的代码。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="parts" multiple="multiple" class="parameterdropdown">
<optgroup value="9" label="B3_L1" datagroupid="9">
<option value="12">A01_Process1_Sub1</option>
<option value="14">A03_Process3_Sub1 </option>
</optgroup>
<optgroup value="6" label="A2_L2" datagroupid="6">
<option value="7">A01_Process1_Sub1</option>
<option value="9">A03_Process3_Sub1 </option>
</optgroup>
<optgroup value="3" label="A1_L1" datagroupid="3">
<option value="3">A01_Process1_Sub1</option>
<option value="4">A03_Process3_Sub1 </option>
</optgroup>
</select>
我在debug.log中找到了这个。在此debug.log中,SQL代码的第1行也在第3行中重复。原始代码的地方有所不同。
register_activation_hook( __FILE__, 'so_50960355_insert_page',
'your_plugin_options_install' );
function so_50960355_insert_page(){
// Define my page arguments
$page = array(
'post_title' => 'Menu',
'post_content' => 'Short Code',
'post_status' => 'publish',
'post_author' => get_current_user_id(),
'post_type' => 'page',
);
wp_insert_post( $page, '' );
}
// function to create the DB / Options / Defaults
function your_plugin_options_install() {
global $wpdb;
$your_db_name = $wpdb->prefix . 'table';
global $your_db_name;
// create the ECPT metabox database table
if($wpdb->get_var("show tables like '$your_db_name'") != $your_db_name)
{
$sql = "CREATE TABLE " . $your_db_name . " (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`apikey` mediumtext NOT NULL,
`locid` mediumtext NOT NULL,
`appid` mediumtext NOT NULL,
UNIQUE KEY id (id)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
答案 0 :(得分:2)
因为它是第三个参数,所以可能不触发该钩子。食品法典委员会说,它希望有一个回调。它似乎不允许一次> 1次回调。 参见https://codex.wordpress.org/Function_Reference/register_activation_hook 将代码更改为
register_activation_hook( __FILE__, 'so_50960355_insert_page');
register_activation_hook( __FILE__, 'your_plugin_options_install' );
答案 1 :(得分:0)
我发现问题出在我使用的Mysql版本。我正在尝试升级版本并在此处更新答案。