Створення власної таблиці для CMS WordPress може знадобитися у таких випадках:
- Під час розробки власного плагіна
- Під час створення власної теми (продаж або оренда нерухомості, авто тощо)
У своїх проєктах для створення таблиць або імпорту даних у БД я використовую WP-функцію «dbDelta» у хукy «register_activation_hook()». Приклад коду:
register_activation_hook(__FILE__, function()
{
global $wpdb;
require_once(ABSPATH.'wp-admin/includes/upgrade.php');
dbDelta("CREATE TABLE IF NOT EXISTS `{$wpdb -> prefix}my_table` (
`id` INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
`title` VARCHAR(255) NOT NULL,
`date_create` INT(10) UNSIGNED NOT NULL
) {$wpdb -> get_charset_collate()};");
});Наведений вище код потрібно розмістити в головному файлі вашого плагіна. Інакше він не буде працювати (принаймні, у мене не спрацьовувало).
Тут усе досить просто:
- На всякий випадок підключаємо файл з потрібним набором функцій «upgrade.php»
- Використовуємо глобальну змінну «$wpdb» для отримання поточного префіксу БД та поточного кодування за допомогою «$wpdb->get_charset_collate()»
Другий спосіб створення таблиць базується на використанні функції «$wpdb->query()» і виглядає так:
register_activation_hook(__FILE__, function()
{
global $wpdb;
$wpdb -> query("CREATE TABLE IF NOT EXISTS `{$wpdb -> prefix}my_table` (
`id` INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
`title` VARCHAR(255) NOT NULL,
`date_create` INT(10) UNSIGNED NOT NULL
) {$wpdb -> get_charset_collate()};");
});За дивним збігом обставин про другий спосіб я дізнався пізніше. Хоча можу з упевненістю сказати, що пробував і його ще на початку вивчення WordPress — тоді він у мене не працював.
А тепер працює — диво 🙂
Увага. Усі наведені вище приклади працюють лише для плагінів. І не спрацьовують під час ініціалізації теми.
