wordpress插件新建自定义Mysql数据表

        我们在写插件的时候,一般情况下是需要用到Mysql数据表来储存我们的插件配置、插件信息(数据和使用信息),简单的插件我们倒是可以通过wp_options表来储存我们的信息。wordpress已经为我们提供了一系列操作wp_options数据表的函数,add_option、update_option、get_option、delete_option…但是使用这个wp_options只适用于一些设置上的东西,在一些日志记录、使用记录时就明显不适用了。这时我们就需要在插件启动时,新建自定义表来储存我们的信息。

        我们可以用到两个函数:

/* 注册激活插件时调用的函数 */
register_activation_hook( __FILE__, 'display_prompt_install');
/* 注册停用插件时调用的函数 */
register_deactivation_hook( __FILE__, 'display_prompt_remove');
/* 注册激活插件时调用的函数 */ 
register_activation_hook( __FILE__, 'display_prompt_install');
/* 注册停用插件时调用的函数 */ 
register_deactivation_hook( __FILE__, 'display_prompt_remove');
/* 注册激活插件时调用的函数 */ register_activation_hook( __FILE__, 'display_prompt_install'); /* 注册停用插件时调用的函数 */ register_deactivation_hook( __FILE__, 'display_prompt_remove');

        在插件启动时,执行函数display_prompt_install,插件停用时执行display_prompt_remove。

        我们可以这样写,来新建我们的MySQL数据表:

function display_prompt_install() {
/* 在数据库的 wp_options 表中添加一条记录,第二个参数为默认值 */
//add_option("ues-on", "1", '', 'yes');//这里是使用wp_options表储存一个ues-on字段,并记录值为1
wpzan_install();//这里是新建自定义表的一个操作,$wpzan_table_name是表名
}
$wpzan_table_name = isset($table_prefix) ? ($table_prefix . 'zan') : ($wpdb->prefix . 'zan');
function wpzan_install(){
global $wpdb, $wpzan_table_name;
if( $wpdb->get_var("show tables like '{$wpzan_table_name}'") != $wpzan_table_name ) {//判断是否有表,无则新建
$wpdb->query("CREATE TABLE {$wpzan_table_name} (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
post_id BIGINT(20) NOT NULL,
user_id BIGINT(20) NOT NULL,
ip_address VARCHAR(25) NOT NULL,
UNIQUE KEY id (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1");
}
}
function wpzan_uninstall(){//再附带一个删除数据表的方法,可以在插件停用后删除数据表,或者是让用户自己选择
global $wpdb, $wpzan_table_name;
$wpdb->query("DROP TABLE IF EXISTS {$wpzan_table_name}");
}
function display_prompt_install() {
    /* 在数据库的 wp_options 表中添加一条记录,第二个参数为默认值 */ 
    //add_option("ues-on", "1", '', 'yes');//这里是使用wp_options表储存一个ues-on字段,并记录值为1
    wpzan_install();//这里是新建自定义表的一个操作,$wpzan_table_name是表名
}
$wpzan_table_name = isset($table_prefix) ? ($table_prefix . 'zan') : ($wpdb->prefix . 'zan');
function wpzan_install(){
global $wpdb, $wpzan_table_name;
if( $wpdb->get_var("show tables like '{$wpzan_table_name}'") != $wpzan_table_name ) {//判断是否有表,无则新建
$wpdb->query("CREATE TABLE {$wpzan_table_name} (
id      BIGINT(20) NOT NULL AUTO_INCREMENT,
post_id BIGINT(20) NOT NULL,
user_id BIGINT(20) NOT NULL,
ip_address VARCHAR(25) NOT NULL,
UNIQUE KEY id (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1");
}
}
function wpzan_uninstall(){//再附带一个删除数据表的方法,可以在插件停用后删除数据表,或者是让用户自己选择
global $wpdb, $wpzan_table_name;
$wpdb->query("DROP TABLE IF EXISTS {$wpzan_table_name}");
}
function display_prompt_install() { /* 在数据库的 wp_options 表中添加一条记录,第二个参数为默认值 */ //add_option("ues-on", "1", '', 'yes');//这里是使用wp_options表储存一个ues-on字段,并记录值为1 wpzan_install();//这里是新建自定义表的一个操作,$wpzan_table_name是表名 } $wpzan_table_name = isset($table_prefix) ? ($table_prefix . 'zan') : ($wpdb->prefix . 'zan'); function wpzan_install(){ global $wpdb, $wpzan_table_name; if( $wpdb->get_var("show tables like '{$wpzan_table_name}'") != $wpzan_table_name ) {//判断是否有表,无则新建 $wpdb->query("CREATE TABLE {$wpzan_table_name} ( id BIGINT(20) NOT NULL AUTO_INCREMENT, post_id BIGINT(20) NOT NULL, user_id BIGINT(20) NOT NULL, ip_address VARCHAR(25) NOT NULL, UNIQUE KEY id (id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"); } } function wpzan_uninstall(){//再附带一个删除数据表的方法,可以在插件停用后删除数据表,或者是让用户自己选择 global $wpdb, $wpzan_table_name; $wpdb->query("DROP TABLE IF EXISTS {$wpzan_table_name}"); }

之后,我又写过相似的文章:

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
When your faith is stronger than your fears, you can make your dreams happen.
当你的信念强于你的胆怯时,你就可以将梦想变为现实了
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容