Правильний вибір хука для створення таблиці — це не лише питання того, «чи запрацює код», а й питання продуктивності вашого сайту. Якщо обрати невідповідний момент для виклику dbDelta, ви можете сповільнити сайт або створити зайве навантаження на базу даних.
Розглянемо основні варіанти та розберемо їхні особливості:
Це «золотий стандарт» для розробників плагінів.
// Викликаємо функцію при активації плагіна
register_activation_hook(__FILE__, 'create_custom_table');
Весь приклад:
function create_custom_table() {
echo "Привіт, світ! Я плагін, і я щойно активувався.";
}
// Викликаємо функцію при активації плагіна
register_activation_hook(__FILE__, 'create_custom_table');
Як це працює: Код виконується лише один раз — у момент активації плагіна.
Плюси: Максимальна продуктивність. WordPress не перевіряє таблицю при кожному перегляді сайту.
Важливо: Параметр __FILE__ має бути у головному файлі плагіна.
Аналог активації, але спеціально для тем. Використовується у functions.php.
// Викликаємо функцію при активації теми
add_action('after_switch_theme', 'create_custom_table');
Весь приклад:
function create_custom_table() {
echo "Привіт, світ! Я тема, і я щойно активувалася.";
}
// Викликаємо функцію при активації теми
add_action('after_switch_theme', 'create_custom_table');
Як це працює: Спрацьовує один раз одразу після того, як ви змінили тему в адмінці на поточну.
Плюси: Ідеально підходить для тем. База даних не навантажується зайвими перевірками під час звичайної роботи сайту.
Хук первинного налаштування теми, який запускається постійно.
// Запускаємо функцію при кожному завантаженні теми
add_action('after_setup_theme', 'create_custom_table');
Весь приклад:
function create_custom_table() {
echo "Привіт, світ! Я перевіряю таблицю при кожному завантаженні сторінки.";
}
// Запускаємо функцію при кожному завантаженні теми
add_action('after_setup_theme', 'create_custom_table');
Як це працює: Цей хук спрацьовує при кожному завантаженні сторінки, як тільки тема була ініціалізована.
Мінуси: Оскільки перевірка таблиці відбуватиметься при кожному відвідуванні сайту, це створює зайве навантаження на сервер.
| Хук | Тип проєкту | Частота запуску | Вердикт |
| register_activation_hook | Плагін | Один раз | Найкращий для плагінів |
| after_switch_theme | Тема | Один раз | Найкращий для тем |
| after_setup_theme | Тема | Кожен запит | Тільки для розробки |
Коли ви створюєте таблицю, хорошим тоном вважається продумати і її видалення. У плагінах для цього використовується файл uninstall.php.
Важливо: Ніколи не видаляйте таблицю з даними користувача при звичайному вимкненні плагіна (deactivation). Видаляйте її лише при повному видаленні (uninstall), щоб користувач не втратив інформацію випадково.
Якщо пишете плагін — використовуйте register_activation_hook.
Якщо пишете тему — використовуйте after_switch_theme.
Використовуйте after_setup_theme лише якщо вам дійсно потрібна постійна перевірка.
Як створити таблицю в WordPress через functions.php: Повний гід по типам даних MySQL
122
Select в HTML: прихований placeholder, підсвічування і динамічний індикатор терміновості
215
Як створити власне меню в адмінці WordPress: простий гайд для новачків
135
Кастомізація сторінки входу в WordPress: логотип, кольори, фонове зображення та власний CSS
336
Як змінити або повністю прибрати текст у футері адмін-панелі WordPress
163
Кастомізація сторінки входу в WordPress: логотип, кольори, фонове зображення та власний CSS 336
Як виявити блокувальник реклами на сайті за допомогою JavaScript 242
Додавання мета-опису та ключових слів у WordPress 236
Мінімальна сума замовлення WooCommerce 223
Як додати виджет для валют на панель адміністратора WordPress 217
Залишити відповідь