WordPress的插件创建如何执行.sql以便在插件激活时插入多行

时间:2018-07-26 10:33:09

标签: mysql database wordpress

我正在创建一个wordpress插件,该插件在激活后会创建我的数据库表。我有一个.sql文件,其中包含〜2000行数据,我想在创建数据库表后执行该文件。您认为哪种方法是在插件激活时插入这些数据的最佳方法?

我知道它将在激活钩上执行-但是是否有可能执行.sql文件,或者我是否必须找到另一种方法并以某种方式通过$ wpdb-> insert()执行每一行?

如果您需要进一步的信息,请询问,我会提供-我也进行了搜索,但找不到相同的案件。

1 个答案:

答案 0 :(得分:0)

下面是实现此目的的最佳方法,因为首先它将初始化custom_create_plugin_tables,然后将初始化custom_insert_data_custom_table

register_activation_hook( __FILE__, 'custom_create_plugin_tables' )
register_activation_hook( __FILE__, 'custom_insert_data_custom_table' );

function custom_create_plugin_tables()
{
        global $wpdb;
        $table_name = $wpdb->prefix . 'table_name';

        $sql = "CREATE TABLE $table_name (
          id int(11) NOT NULL AUTO_INCREMENT,
          column_two varchar(255) DEFAULT NULL,
          column_three int(11) NOT NULL,
          UNIQUE KEY id (id)
              );";

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

function custom_insert_data_custom_table()
{
      global $wpdb;
      $table_name = $wpdb->prefix . 'table_name';

      $rows_affected = $wpdb->insert( $table_name, array( 'column_two' => "column_two_value", 'column_three' => 'column_three_value' ));
     require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
     dbDelta( $rows_affected );

}