我们在写插件的时候,一般情况下是需要用到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字段,并记录值为1wpzan_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
暂无评论内容