Іноді стандартних можливостей WordPress (постів та мета-полів) недостатньо для складних проєктів. У таких випадках створення власної таблиці в базі даних — це найефективніший шлях для оптимізації швидкості та структури сайту.
Для роботи з базою даних ми використовуємо функцію dbDelta. Її головна перевага — розумне оновлення: якщо таблиця вже існує, вона не створить її заново, а лише оновить структуру (наприклад, якщо ви додасте нову колонку пізніше).
Додайте цей код у файл functions.php вашої теми:
function create_custom_table() {
global $wpdb;
// Назва таблиці з урахуванням префікса (наприклад, wp_custom_table)
$table_name = $wpdb->prefix . 'custom_table';
// Отримуємо кодування сайту (зазвичай utf8mb4)
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id INT NOT NULL AUTO_INCREMENT,
column_name1 VARCHAR(255) NOT NULL,
column_name2 TEXT NOT NULL,
column_name3 INT DEFAULT 0,
PRIMARY KEY (id)
) $charset_collate;";
// Підключаємо необхідний файл для роботи dbDelta
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
// Запускаємо функцію при налаштуванні теми
add_action('after_setup_theme', 'create_custom_table');
Щоб ваша таблиця працювала швидко і не займала зайвого місця, важливо правильно обрати тип даних для кожної колонки.
| Тип | Опис | Коли використовувати |
| INT | Ціле число (до 4 млрд). | ID, лічильники, кількість товарів. |
| TINYINT | Дуже маленьке число (-128 до 127). | Статуси (0 або 1), налаштування “так/ні”. |
| DECIMAL | Точне число з рухомою комою. | Гроші та ціни. Наприклад, DECIMAL(10,2). |
| Тип | Опис | Коли використовувати |
| VARCHAR(N) | Рядок змінної довжини (до N символів). | Заголовки, email, імена (зазвичай 255). |
| TEXT | Довгий текст (до 65 КБ). | Описи, коментарі, JSON-дані. |
| LONGTEXT | Дуже довгий текст (до 4 ГБ). | Логи або величезні статті. |
| Тип | Опис | Коли використовувати |
| DATETIME | Дата і час (YYYY-MM-DD HH:MM:SS). | Дата створення замовлення або реєстрації. |
| TIMESTAMP | Час у секундах від 1970 року. | Автоматична фіксація часу зміни запису. |
dbDeltaФункція dbDelta дуже вибаглива до оформлення SQL-запиту. Якщо ігнорувати ці правила, таблиця не створиться:
Два пробіли: Між словами PRIMARY KEY та визначенням ключа (id) має бути рівно два пробіли.
Великі літери: Усі команди SQL (CREATE TABLE, NOT NULL, INT) краще писати великими літерами.
Довжина VARCHAR: Ви обов’язково повинні вказати довжину для VARCHAR, наприклад VARCHAR(255).
Після збереження файлу functions.php просто оновіть будь-яку сторінку вашого сайту. Після цього зайдіть у phpMyAdmin. У списку таблиць вашої бази даних має з’явитися нова позиція: wp_custom_table.

Хуки активації та ініціалізації у WordPress: Де і коли створювати таблиці
118
Select в HTML: прихований placeholder, підсвічування і динамічний індикатор терміновості
215
Як створити власне меню в адмінці WordPress: простий гайд для новачків
135
Кастомізація сторінки входу в WordPress: логотип, кольори, фонове зображення та власний CSS
336
Як змінити або повністю прибрати текст у футері адмін-панелі WordPress
163
Кастомізація сторінки входу в WordPress: логотип, кольори, фонове зображення та власний CSS 336
Як виявити блокувальник реклами на сайті за допомогою JavaScript 242
Додавання мета-опису та ключових слів у WordPress 236
Мінімальна сума замовлення WooCommerce 223
Як додати виджет для валют на панель адміністратора WordPress 217
Залишити відповідь