Хук after_switch_theme
в WordPress позволяет выполнять действия после активации новой темы. Он срабатывает при первой загрузке WordPress сразу после переключения темы. Данный хук полезен для настройки новых параметров темы и выполнения дополнительных операций, связанных с изменением темы.
Когда активируется новая тема, after_switch_theme
запускается на следующей загрузке WordPress, после чего можно выполнять специфические задачи, например, добавление настроек темы по умолчанию. В отличие от switch_theme
, хук after_switch_theme
выполняется позже — не в текущем исполняемом PHP скрипте, а на следующей странице загрузки.
do_action( ‘after_switch_theme’, string $old_name, WP_Theme $old_theme )
Параметры
Хук after_switch_theme
передает два параметра:
$old_name
(строка): Название старой темы.$old_theme
(объектWP_Theme
): Экземпляр объектаWP_Theme
старой темы, если она существует.
Если старой темы нет, $old_name
будет содержать только слаг (slug) старой темы.
Пример 1: Добавление параметров по умолчанию при активации темы
В этом примере при активации новой темы создаются параметры по умолчанию.
add_action('after_switch_theme', 'setup_theme_defaults');
function setup_theme_defaults() {
add_option('catalog_visibility', 1); // Параметр для отображения каталога
add_option('enable_advanced_features', 1); // Параметр для включения дополнительных функций
}
Здесь устанавливается новый размер миниатюр и больших изображений при активации темы.
Пример 3: Удаление настроек при деактивации темы и добавление при активации
В этом примере удаляются настройки при деактивации старой темы и создаются новые настройки при активации новой.
// Удаляем параметры при деактивации темы
add_action('switch_theme', 'deactivate_old_theme');
function deactivate_old_theme($old_name) {
delete_option('theme_custom_settings');
}
// Добавляем параметры при активации новой темы
add_action('after_switch_theme', 'activate_new_theme');
function activate_new_theme($new_name) {
$default_settings = [
'display_welcome_message' => 1,
'highlight_featured_content' => 1
];
add_option('theme_custom_settings', $default_settings);
}
При активации новой темы добавляется массив настроек по умолчанию, а при деактивации — удаляется, чтобы сохранять чистоту данных.
Пример 4: Выполнение действия при наличии старой темы
Если при активации новой темы нужно выполнить определенные действия, когда старая тема существует, используйте параметр $old_theme
.
add_action('after_switch_theme', 'check_old_theme_existence', 10, 2);
function check_old_theme_existence($old_name, $old_theme) {
if ($old_theme) {
error_log("Смена с темы: " . $old_theme->get('Name'));
} else {
error_log("Старой темы не найдено, переключение с несуществующей темы.");
}
}
В этом примере проверяется наличие старой темы. Если она существует, ее имя будет записано в лог-файл.
Заключение
Хук after_switch_theme
в WordPress — отличный инструмент для выполнения действий при активации новой темы. С его помощью можно создавать настройки по умолчанию, адаптировать параметры изображений, управлять поведением тем и хранить пользовательские данные. Используйте его для автоматической настройки и управления при смене тем в WordPress.