switch_theme()
switch_theme( string $stylesheet ) 切换主题。 Switches the t…
switch_theme( string $stylesheet )
切换主题。
Switches the theme.
目录锚点:#说明#参数#源码
说明(Description)
接受一个参数:$stylesheet of theme。它还接受两个参数的附加函数签名:$template和$stylesheet。这是为了向后兼容。
参数(Parameters)
参数 | 类型 | 说明 |
---|---|---|
$stylesheet | (string) | 样式表名称 |
源码(Source)
/** * Switches the theme. * * Accepts one argument: $stylesheet of the theme. It also accepts an additional function signature * of two arguments: $template then $stylesheet. This is for backwards compatibility. * * @since 2.5.0 * * @global array $wp_theme_directories * @global WP_Customize_Manager $wp_customize * @global array $sidebars_widgets * * @param string $stylesheet Stylesheet name */ function switch_theme( $stylesheet ) { global $wp_theme_directories, $wp_customize, $sidebars_widgets; $_sidebars_widgets = null; if ( 'wp_ajax_customize_save' === current_action() ) { $_sidebars_widgets = $wp_customize->post_value( $wp_customize->get_setting( 'old_sidebars_widgets_data' ) ); } elseif ( is_array( $sidebars_widgets ) ) { $_sidebars_widgets = $sidebars_widgets; } if ( is_array( $_sidebars_widgets ) ) { set_theme_mod( 'sidebars_widgets', array( 'time' => time(), 'data' => $_sidebars_widgets ) ); } $old_theme = wp_get_theme(); $new_theme = wp_get_theme( $stylesheet ); if ( func_num_args() > 1 ) { $template = $stylesheet; $stylesheet = func_get_arg( 1 ); } else { $template = $new_theme->get_template(); } update_option( 'template', $template ); update_option( 'stylesheet', $stylesheet ); if ( count( $wp_theme_directories ) > 1 ) { update_option( 'template_root', get_raw_theme_root( $template, true ) ); update_option( 'stylesheet_root', get_raw_theme_root( $stylesheet, true ) ); } else { delete_option( 'template_root' ); delete_option( 'stylesheet_root' ); } $new_name = $new_theme->get('Name'); update_option( 'current_theme', $new_name ); // Migrate from the old mods_{name} option to theme_mods_{slug}. if ( is_admin() && false === get_option( 'theme_mods_' . $stylesheet ) ) { $default_theme_mods = (array) get_option( 'mods_' . $new_name ); add_option( "theme_mods_$stylesheet", $default_theme_mods ); } else { /* * Since retrieve_widgets() is called when initializing a theme in the Customizer, * we need to to remove the theme mods to avoid overwriting changes made via * the Customizer when accessing wp-admin/widgets.php. */ if ( 'wp_ajax_customize_save' === current_action() ) { remove_theme_mod( 'sidebars_widgets' ); } } update_option( 'theme_switched', $old_theme->get_stylesheet() ); /** * Fires after the theme is switched. * * @since 1.5.0 * * @param string $new_name Name of the new theme. * @param WP_Theme $new_theme WP_Theme instance of the new theme. */ do_action( 'switch_theme', $new_name, $new_theme ); }
更新版本 | 源码位置 | 使用 | 被使用 |
---|---|---|---|
2.5.0 | wp-includes/theme.php | 11 | 17 |
类别:WordPress 函数手册、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!