Я создал несколько дополнительных таблиц для плагина, который я разрабатываю, и мне нужно добавить индексы к этим таблицам.
Что WordPress способ сделать это?
Использование dbDelta()
, похоже, не работает, и я не вижу ошибок в журналах.
Я создал несколько дополнительных таблиц для плагина, который я разрабатываю, и мне нужно добавить индексы к этим таблицам.
Что WordPress способ сделать это?
Использование dbDelta()
, похоже, не работает, и я не вижу ошибок в журналах.
Вы можете выполнять произвольные операторы SQL с помощью wpdb :: query () , включая операторы определения данных, например
function
create_index ()
{
global $wpdb ;
$sql = "CREATE INDEX my_index ON {$wpdb->prefix}my_table (my_column)" ;
$wpdb->query ($sql) ;
return ;
}
Примечание. Поскольку $wpdb->query()
может выполняться произвольный SQL, если передаваемый ему оператор содержит ЛЮБОЙ пользовательский ввод, вы должны использовать wpdb :: prepare () для защиты от атак SQL-инъекций.
Но возникает вопрос: как вы создавали таблицы для плагинов? «Вручную» или программно? Если программно, вы не использовали $wpdb->query()
? Если вы сделали это «вручную», то вам действительно нужно создавать таблицы (и их индексы) после активации плагина.
Смотрите отличный ответ на этот другой вопрос WPSE, чтобы узнать, как подключить активацию плагина (и / или деактивацию и удаление) для создания таких вещей, как создание личных таблиц.
Используя dbDelta, поверх PRIMARY KEY, вы можете включить слово KEY, чтобы создать индекс для других столбцов:
Пример из schema.php в ядре:
Источник: codex - Создание таблиц с помощью плагинов
источник