Словом, так - $wpdb
клас. Див. Codex для отримання додаткової інформації.
Щоразу, коли ви взаємодієте зі спеціальною таблицею (або будь-якою таблицею, насправді), вам слід пройтись, $wpdb
особливо переконайтесь, що ви знайомі з prepare
методом, який може допомогти уникнути запитів і запобігти ін'єкціям.
Ви вже повинні бути знайомі, як і ви повинні використовувати його для створення таблиці. На гачку встановлення у вас повинно бути щось на кшталт:
$charset_collate = '';
if ( ! empty($wpdb->charset) )
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
if ( ! empty($wpdb->collate) )
$charset_collate .= " COLLATE $wpdb->collate";
//Create custom table
$sql_custom_table ="CREATE TABLE {$wpdb->prefix}my_table (
id bigint(20) unsigned NOT NULL auto_increment,
column_a varchar(255) default NULL,
column_b varchar(255) default NULL,
PRIMARY KEY (id)
) $charset_collate; ";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql_custom_table);
Цей код насправді виконується щоразу, коли плагін активовано (тобто не тільки встановлений). Тож воно запуститься, коли хтось оновить плагін автоматично . Примітка. Якщо вони оновлюються, замінивши плагін вручну - тоді він не буде - значить, вам потрібно буде активувати вищевказаний код, admin_init
коли ваш плагін буде оновлено (збережіть номер версії в таблиці параметрів, перевірте, чи немає поточної версії) .
Тепер, як правило, ви не хочете, щоб CREATE TABLE
команда SQL запускалася щоразу, коли ви оновлюєте плагін - ось тут і dBDelta()
надходить.
Перш ніж запустити вищевказану команду - вона перевіряє, чи існує таблиця. Більше того, він перевіряє типи стовпців. Отже, якщо таблиці не існує, вона створює її, якщо вона є, але деякі типи стовпців змінили її, вона оновлює їх, а якщо стовпець не існує - додає її.
На жаль - якщо ви вилучите стовпчик із наведеного вище, він не буде автоматично видалений. Щоб видалити стовпці / таблиці, потрібно спеціально DROP
їх (перевірити їх існування до цього).