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 шт):
Похоже, проблема в том, что вы пытаетесь в одном запросе добавить второй столбец после вновь добавляемого первого и его ещё нет. Попробуйте что-то из таких вариантов:
- Добавлять столбцы двумя последовательными запросами.
- Добавить оба столбца после
comment_count.
Очень похоже на то, что ваша идея модификации wp_posts неправильная, для ваших целей лучше подойдёт хранение данных в wp_postmeta.