WP Как создать новые колонки таблицы в базе данных?

Создаю плагин Wordpress, который после активации должен к стандартной таблице wp_posts добавить две колонки positive_users_reaction и negative_users_reaction. В ячейках этих колонок хочу складывать id пользователей которые положительно/негативно оценили каждый пост. Вот код.

function create_rows()
        {
            global $wpdb;
            require_once ABSPATH . 'wp-admin/includes/upgrade.php';

            $table_name = $wpdb->get_blog_prefix() . 'posts';
            $charset_collate = $wpdb->get_charset_collate();
            $sql = "ALTER TABLE {$table_name}
            (ADD COLUMN 
             positive_users_reaction TEXT NOT NULL AFTER comment_count,
             negative_users_reaction TEXT NOT NULL AFTER positive_users_reaction);
            {$charset_collate}";
            dbDelta($sql);

            $wpdb->insert(
                $table_name,
                    array(
                        'positive_users_reaction' => [],
                        'negative_users_reaction' => [],
                    )
                );
        }

        create_rows();

Подскажите, почему оно ничего не создает и не назначает скобки объекта по умолчанию (Ведь это же правильный стартовый шаблон если надо получать array)? Как это поправить что б создавало две колонки?


Ответы (1 шт):

Автор решения: br3t

Похоже, проблема в том, что вы пытаетесь в одном запросе добавить второй столбец после вновь добавляемого первого и его ещё нет. Попробуйте что-то из таких вариантов:

  1. Добавлять столбцы двумя последовательными запросами.
  2. Добавить оба столбца после comment_count.

Очень похоже на то, что ваша идея модификации wp_posts неправильная, для ваших целей лучше подойдёт хранение данных в wp_postmeta.

→ Ссылка