Хуки активації та ініціалізації у WordPress: Де і коли створювати таблиці


Правильний вибір хука для створення таблиці — це не лише питання того, «чи запрацює код», а й питання продуктивності вашого сайту. Якщо обрати невідповідний момент для виклику dbDelta, ви можете сповільнити сайт або створити зайве навантаження на базу даних.

Розглянемо основні варіанти та розберемо їхні особливості:

1. register_activation_hook

Це «золотий стандарт» для розробників плагінів.

// Викликаємо функцію при активації плагіна
register_activation_hook(__FILE__, 'create_custom_table');

Весь приклад:

function create_custom_table() {
    echo "Привіт, світ! Я плагін, і я щойно активувався.";
}
// Викликаємо функцію при активації плагіна
register_activation_hook(__FILE__, 'create_custom_table');
  • Як це працює: Код виконується лише один раз — у момент активації плагіна.

  • Плюси: Максимальна продуктивність. WordPress не перевіряє таблицю при кожному перегляді сайту.

  • Важливо: Параметр __FILE__ має бути у головному файлі плагіна.

2. after_switch_theme





Аналог активації, але спеціально для тем. Використовується у functions.php.

// Викликаємо функцію при активації теми
add_action('after_switch_theme', 'create_custom_table');

Весь приклад:

function create_custom_table() {
    echo "Привіт, світ! Я тема, і я щойно активувалася.";
}
// Викликаємо функцію при активації теми
add_action('after_switch_theme', 'create_custom_table');
  • Як це працює: Спрацьовує один раз одразу після того, як ви змінили тему в адмінці на поточну.

  • Плюси: Ідеально підходить для тем. База даних не навантажується зайвими перевірками під час звичайної роботи сайту.

3. after_setup_theme

Хук первинного налаштування теми, який запускається постійно.

// Запускаємо функцію при кожному завантаженні теми
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 лише якщо вам дійсно потрібна постійна перевірка.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *