WordPress создайте таблицу, если она не существует, или обновите столбцы - PullRequest
0 голосов
/ 09 сентября 2018

До сих пор я использовал этот код в register_activation_hook для всех своих таблиц:

$playlist_table = $wpdb->prefix . "app_playlists";
    if($wpdb->get_var( "show tables like '$playlist_table'" ) != $playlist_table){

        $sql = "CREATE TABLE $playlist_table (
            `id` int(11) NOT NULL AUTO_INCREMENT,
            `title` varchar(100) NOT NULL,
            PRIMARY KEY (`id`)
        ) $charset_collate;";
        dbDelta( $sql );

    }

Затем в действии plugins_loaded я проверяю версию плагина, а затем иногда добавляю некоторые столбцы в таблицу, удаляю или, возможно, изменяю некоторые столбцы.

Это растягивает код таблицы в разных местах, затрудняя его поддержку. Мне было интересно, могу ли я написать CREATE TABLE таким образом, чтобы все мои изменения в таблице были в одном месте, а wpdb просто обновил бы таблицу самостоятельно?

Например, давайте предположим, что моя таблица теперь выглядит так после всех обновлений:

$sql = "CREATE TABLE $playlist_table (
            `id` int(11) NOT NULL AUTO_INCREMENT,
            `major_title` varchar(300) NOT NULL,
            `new_column` varchar(500) NOT NULL,
            `some_other_new_column` tinyint(1) DEFAULT NULL,
            PRIMARY KEY (`id`)
        ) $charset_collate;";
        dbDelta( $sql );
...