创建数据库表时要使用的挂钩

时间:2013-04-16 作者:Ionut

我读了Codex 以及其他一些教程,介绍了为WordPress创建新表的过程。

我觉得步骤很简单;然而,我遇到了一个小问题。

我正在开发一个主题(不是插件),我正在创建一些需要新WordPress表的功能。

所有教程都涉及到必须激活的单独插件的情况。在这种情况下,挂钩如下所示:

register_activation_hook(__FILE__,\'my_plugin_data_tables_install\');
问题是我没有任何要激活的插件。我应该使用什么样的钩子来确保表创建正确并且只创建一次。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

如上所述,after_switch_theme 应该是个不错的选择。您的表创建/更新功能只会在切换主题时运行,这大致类似于激活插件。如果您使用dbDelta 要创建和/或更新表,表创建应该没有问题。From the Codex:

global $wpdb;
$installed_ver = get_option( "jal_db_version" );

    if( $installed_ver != $jal_db_version ) {

      $sql = "CREATE TABLE $table_name (
         id mediumint(9) NOT NULL AUTO_INCREMENT,
         time datetime DEFAULT \'0000-00-00 00:00:00\' NOT NULL,
         name tinytext NOT NULL,
         text text NOT NULL,
         url VARCHAR(100) DEFAULT \'\' NOT NULL,
         UNIQUE KEY id (id)
      );";

      require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
      dbDelta( $sql );

      update_option( "jal_db_version", $jal_db_version );
    }
这将对照数据库中存储的版本检查硬编码表的版本,并在必要时创建或更新。注意:它将创建or 根据以下人员的计算进行更新dbDelta. 它不会尝试两次创建同一个表。如果表已经存在,它将尝试应用现有表和新表定义之间的差异。

结束

相关推荐

在新的Mac OSX Lion环境中的本地主机上获取“Error establing a Database Connection”(在本地主机上建立数据库连接时出错)

我刚买了一台新的Macbook Air,我一直在手动从旧Macbook迁移文件和代码(而不是使用迁移助手,以避免携带cruft)。我有几个网站在本地运行Wordpress(在我的旧Macbook上),还有几个网站只是静态运行,没有CMS。我想我已经正确地配置了Apache和MySQL(在新的Mac上用Homebrew安装MySQL,并使用Sequel Pro对其进行管理),但我的所有Wordpress站点都不断出现“建立数据库连接错误”。静态站点在其本地域上运行得很好,因此我认为我正确设置了Apache和