switch_themeхук-событиеWP 1.5.0

Срабатывает при смене темы. Используется при деактивации темы.

Срабатывает после того как тема была переключена, но до следующего запроса - редиректа. При активации темы происходит редирект на туже самую страницу.

Во время этого события, доступны только функции старой темы, с которой переключаемся. Если нужны функции новой темы, используйте событие 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 старой темы.

Примеры

0

#1 Удаление опций темы при её деактивации

add_action('switch_theme', 'mytheme_del_options');
function mytheme_del_options( $old_name ) {
	delete_option('mytheme_options');
}
0

#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()
switch_theme
wp-includes/theme.php 829
do_action( 'switch_theme', $new_name, $new_theme, $old_theme );

Где используется хук в WordPress

wp-includes/default-filters.php 348
add_action( 'switch_theme', array( 'WP_Theme_JSON_Resolver', 'clean_cached_data' ) );