Правильный выбор хука для создания таблицы — это не только вопрос того, «заработает ли код», но и вопрос производительности вашего сайта. Если выбрать неподходящий момент для вызова 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 только если вам действительно нужна постоянная проверка.
Select в HTML: скрытый placeholder, подсветка и динамический индикатор срочности
77
Как создать собственное меню в админке WordPress: простое руководство для новичков
84
Кастомизация страницы входа в WordPress: логотип, цвета, фоновая картинка и собственный CSS
122
Как изменить или полностью убрать текст в подвале (футере) админ-панели WordPress
98
Как добавить выбор отдела для пользователей в WordPress и выводить его на сайте
93
Добавление мета-описания и ключевых слов в WordPress 519
Как обнаружить блокировщик рекламы на сайте с помощью JavaScript 203
Минимальная сумма заказа WooCommerce 181
Как добавить виджет для валют на панель администратора WordPress 154
Как добавить поле «Отдел» и ограничить видимость категорий в WordPress 150
Добавить комментарий