Хуки активации и инициализации в 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 только если вам действительно нужна постоянная проверка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *