switch_theme
Спрацьовує при зміні теми. Використовується для деактивації теми.
Спрацьовує після того, як тема була переключена, але до наступного запиту – редиректа. При активації теми відбувається редирект на ту саму сторінку.
Під час цієї події доступні лише функції старої теми, з якої ми перемикаємося. Якщо потрібна функція нової теми, використовуйте подію after_switch_theme .
Цей хук слід використовувати, коли потрібно зробити щось при деактивації теми.
Особливості роботи перемикання і як це працює крок за кроком дивіться в описі after_switch_theme .
Використання
add_action( 'switch_theme', 'wp_kama_switch_theme_action', 10, 3); /** * Function for `switch_theme` action-hook. * * @param string $new_name Name of the new theme. * @param WP_Theme $new_theme WP_Theme instance of the new theme. * @param WP_Theme $old_theme WP_Theme instance of the old theme. * * @return void */ function wp_kama_switch_theme_action( $new_name, $new_theme, $old_theme ){ // action... }
-
$new_name
(рядок) - Назва нової теми
-
$new_theme
(WP_Theme) -
WP_Theme об’єкт нової теми. wp_get_theme
() -
$old_theme
(WP_Theme) - WP_Theme об’єкт старої теми.
Приклади
#1 Видалення опцій теми під час її деактивації
add_action('switch_theme', 'mytheme_del_options'); function mytheme_del_options( $old_name ) { delete_option('mytheme_options'); }
#2 Видалення опцій при деактивації теми та додавання при активації
// видаляємо налаштування теми під час деактивації add_action('switch_theme', 'deactivate_my_theme'); function deactivate_my_theme( $old_name ){ // Доступні функції старої теми, але не нової delete_option('mytheme_options'); } // додаємо налаштування теми під час активації add_action('after_switch_theme', 'activate_my_theme'); function activate_my_theme( $new_name ){ // Доступні функції нової теми, але не старої $opt = array('opt1'=>'val1', 'opt2'=>'val2'); add_option('mytheme_options', $opt); }
список змін
З версії 1.5.0 | Введено. |
З версії 4.5.0 | Встановлено $old_theme parameter . |
Де викликається хук
switch_theme
Де використовується хук у WordPress
wp-includes/default-filters.php 348
add_action( 'switch_theme', array( 'WP_Theme_JSON_Resolver', 'clean_cached_data' ) );