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 | Introduced the $old_theme parameter. |
Где вызывается хук
switch_theme
wp-includes/theme.php 878
do_action( 'switch_theme', $new_name, $new_theme, $old_theme );
Где используется хук в WordPress
wp-includes/default-filters.php 361
add_action( 'switch_theme', 'wp_clean_theme_json_cache' );