gpt4 book ai didi

php - Wordpress 通过插件创建表格

转载 作者:行者123 更新时间:2023-11-29 04:42:12 25 4
gpt4 key购买 nike

如何通过激活插件创建表(如果不存在)?注意:如果表存在,插件工作正常,但如果不存在,我需要创建表我尝试的是:

function alicelf_bookmark() {
global $wpdb;
$table_name = $wpdb->prefix . "alice_user_bookmarks";
$charset_collate = '';

if ( ! empty( $wpdb->charset ) )
$charset_collate = "DEFAULT CHARACTER SET {$wpdb->charset}";

if ( ! empty( $wpdb->collate ) )
$charset_collate .= " COLLATE {$wpdb->collate}";

$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id INT NOT NULL AUTO_INCREMENT,
user_id INT,
name VARCHAR(255),
shipping_address VARCHAR(255),
user_notes TEXT,
) $charset_collate;";

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
//some other plugin stuff..
}
add_action('wp_footer', 'alicelf_bookmark');

也许我使用了错误的操作?

最佳答案

当你的插件需要它自己的表时,你会想要考虑到这个表会随着时间的推移而改变。您知道它会在第一次安装时发生变化(从无到您的第一个版本)。稍后它可以在用户更新插件时更改。

执行此操作的一个好方法是在选项表中存储数据库版本号,并检查它是否已更新。如果选项表中的版本号与插件中的版本号不匹配,则需要安装。

这给我们带来了你的插件应该如何处理表结构的变化。一个简单的方法可以包括大量的 if 测试和自定义 ALTER TABLE 查询(从 1.0 升级到 3.0 时不需要与从 1.0 升级到 3.0 时需要的查询相同的查询)。这可能很难很快处理。

通常最好将 ALTER TABLE 语句留给 WordPress 自己的 dbDelta 函数,它将生成您需要的语句。

<?php
$prefix_table_name = $wpdb->prefix . 'prefix_table_name';
$prefix_db_version = '1.0';
$prefix_db_installed_version = get_option( 'prefix_db_version' );

/**
* Create or update tables if needed.
*/
function prefix_install_db() {
global $wpdb;

if ( $prefix_db_installed_version == $prefix_db_version )
return; // Database is current version, no need to do anything

// We'll need dbDelta()
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );

$sql = "CREATE TABLE " . $prefix_table_name . " (
ID bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
email varchar(320) NOT NULL,
PRIMARY KEY ID(ID)
);";
dbDelta( $sql );

update_option( 'prefix_db_version' , $prefix_db_version );
}
add_action( 'plugins_loaded', 'prefix_install_db' );

要进一步阅读,Creating Tables with Plugins 的精彩指南可以在法典中找到。

关于php - Wordpress 通过插件创建表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25978454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com