web-dev-qa-db-ja.com

起動フックがテーブルを作成していません

どういうわけか私のアクティベーションフックは新しいデータベーステーブルを作成していません。

コード:

function mm_booking_activate() {
    global $wpdb;
    $mm_booking_table_name = $wpdb->prefix . "mm_booking";
    $mm_booking_db_version = '1.0';
    $charset_collate = $wpdb->get_charset_collate();

    if ( $wpdb->get_var( 'SHOW TABLES LIKE ' . $mm_booking_table_name ) != $mm_booking_table_name ) {
        $sql = "CREATE TABLE $mm_booking_table_name (
            id mediumint(9) NOT NULL AUTO_INCREMENT,
            first_name varchar(255),
            last_name varchar(255),
            address varchar(255),
            lat decimal(10, 8) NOT NULL,
            lng decimal(11, 8) NOT NULL,
            field enum('option1', 'option2', 'option3'),
            phone_number varchar(255),
            email varchar(255),
            date_time_from datetime DEFAULT CURRENT_TIMESTAMP,
            date_time_to datetime DEFAULT CURRENT_TIMESTAMP,
      status enum('pending', 'approved', 'rejected') DEFAULT 'pending',
      modification_time datetime ON UPDATE CURRENT_TIMESTAMP,
      creation_time datetime DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY  (id)
    ) $charset_collate;";

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
        add_option( 'mm_booking_db_version', $mm_booking_db_version );
    }
}
register_activation_hook( __FILE__, 'mm_booking_activate' );
1
Milos

テーブル名は、存在するかどうかを確認している行に引用符で囲む必要があります。私はそれをテストしました、そしてそれが修正された後、テーブルは首尾よく作成されました。これが完全なコードです。

function mm_booking_activate() {
    global $wpdb;
    $mm_booking_table_name = $wpdb->prefix . "mm_booking";
    $mm_booking_db_version = '1.0';
    $charset_collate = $wpdb->get_charset_collate();

    if ( $wpdb->get_var( "SHOW TABLES LIKE '{$mm_booking_table_name}'" ) != $mm_booking_table_name ) {
        $sql = "CREATE TABLE $mm_booking_table_name (
            id mediumint(9) NOT NULL AUTO_INCREMENT,
            first_name varchar(255),
            last_name varchar(255),
            address varchar(255),
            lat decimal(10, 8) NOT NULL,
            lng decimal(11, 8) NOT NULL,
            field enum('option1', 'option2', 'option3'),
            phone_number varchar(255),
            email varchar(255),
            date_time_from datetime DEFAULT CURRENT_TIMESTAMP,
            date_time_to datetime DEFAULT CURRENT_TIMESTAMP,
      status enum('pending', 'approved', 'rejected') DEFAULT 'pending',
      modification_time datetime ON UPDATE CURRENT_TIMESTAMP,
      creation_time datetime DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY  (id)
    ) $charset_collate;";

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
        add_option( 'mm_booking_db_version', $mm_booking_db_version );
    }
}
register_activation_hook( __FILE__, 'mm_booking_activate' );
1
Dave Romsey