Главная
›
Новости
Switch_theme — Срабатывает при смене темы. Используется при деактивации темы. Хук-событие WordPress
Опубликовано: 01.09.2018
Срабатывает при смене темы. Используется при деактивации темы.
Срабатывает после того как тема была переключена, но до следующего запроса - редиректа. При активации темы происходит редирект на туже самую страницу.
Во время этого события, доступны только функции старой темы, с которой переключаемся. Если нужны функции новой темы, используйте событие after_switch_theme .
Этот хук следует использовать, когда нужно что-то сделать при деактивации темы.
Особенности работы переключения и как это работает шаг за шагом, смотрите в описании after_switch_theme .
Использование
add_action( 'switch_theme', '____action_function_name', 10, 3 );
function ____action_function_name( $new_name, $new_theme, $old_theme ) {
// Действие...
}
$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 );
}
Где используется хук
...
}
}
update_option( 'theme_switched', $old_theme->get_stylesheet() );
/**
* Fires after the theme is switched.
*
* @since 1.5.0
* @since 4.5.0 Introduced the `$old_theme` parameter.
*
* @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.
*/
do_action( 'switch_theme', $new_name, $new_theme, $old_theme );
}
/**
* Checks that current theme files 'index.php' and 'style.css' exists.
*
* Does not initially check the default theme, which is the fallback and should always exist.
* But if it doesn't exist, it'll fall back to the latest core default theme that does exist.
* Will switch theme to the fallback theme if current theme does not validate.
*
* You can use the {@see 'validate_current_theme'} filter to return false to
* disable this functionality.
*
* @since 1.5.0
* @see WP_DEFAULT_THEME
*
...