Иногда стандартных возможностей 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 — очень «капризная». Если проигнорировать эти правила, таблица просто не создастся:
Два пробела: Между словами PRIMARY KEY и определением ключа (id) должно быть строго два пробела.
Заглавные буквы: Все команды SQL (CREATE TABLE, NOT NULL, INT) лучше писать капсом.
Длина VARCHAR: Вы обязаны указывать длину для VARCHAR, например VARCHAR(255).
После сохранения functions.php, обновите любую страницу вашего сайта. Затем зайдите в phpMyAdmin. В списке таблиц вашей базы данных должна появиться новая строка: wp_custom_table.

Хуки активации и инициализации в WordPress: Где и когда создавать таблицы
58
Описание прав доступа (capabilities) в WordPress: как настроить меню и управление доступом для пользователей
120
Как создать собственное меню в админке WordPress: простое руководство для новичков
84
Кастомизация страницы входа в WordPress: логотип, цвета, фоновая картинка и собственный CSS
122
Как изменить или полностью убрать текст в подвале (футере) админ-панели WordPress
98
Добавление мета-описания и ключевых слов в WordPress 519
Минимальная сумма заказа WooCommerce 181
Как добавить виджет для валют на панель администратора WordPress 154
Как добавить поле «Отдел» и ограничить видимость категорий в WordPress 150
Как добавить изображение к категории WordPress и вывести его на сайте 130
Добавить комментарий