WP 3.3 RC1 neue switch_theme () Methode foobars Seitenleisten

Ich habe den neuen 3.3 RC1 Code gegen mein Plugin getestet und ich habe einen signifikanten Unterschied in der function switch_theme () gefunden, die meine Fähigkeit, Widgets dynamisch voreinzustellen, einschränkt.

Das Problem scheint der Aufruf des globalen $ sidebars_widgets zu sein. Beachten Sie, dass die switch_theme () -Methode in früheren Versionen keine Sidebar-Widgets enthielt.

Weiß jemand, was der Zweck davon ist?

Ich habe ein Plugin, das Widgets vor dem Installieren eines neuen Themas und dem Aufruf von switch_theme () während der Plugin-Aktivierung dynamisch erstellt und einfügt. Der Code läuft in 3.2.1, läuft aber nicht in 3.3 rc1 (Die Sidebar-Widgets werden erstellt, nur nicht in die Sidebars eingefügt)

Hier ist der Code von 3.2.1

function switch_theme($template, $stylesheet) { global $wp_theme_directories; 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)); } delete_option('current_theme'); $theme = get_current_theme(); if ( is_admin() && false === get_option( "theme_mods_$stylesheet" ) ) { $default_theme_mods = (array) get_option( "mods_$theme" ); add_option( "theme_mods_$stylesheet", $default_theme_mods ); } do_action('switch_theme', $theme); } 

Und hier ist der aktualisierte Code von 3.3 rc1

 function switch_theme($template, $stylesheet) { global $wp_theme_directories, $sidebars_widgets; if ( is_array( $sidebars_widgets ) ) set_theme_mod( 'sidebars_widgets', array( 'time' => time(), 'data' => $sidebars_widgets ) ); $old_theme = get_current_theme(); 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)); } delete_option('current_theme'); $theme = get_current_theme(); if ( is_admin() && false === get_option( "theme_mods_$stylesheet" ) ) { $default_theme_mods = (array) get_option( "mods_$theme" ); add_option( "theme_mods_$stylesheet", $default_theme_mods ); } update_option( 'theme_switched', $old_theme ); do_action( 'switch_theme', $theme ); } 

Solutions Collecting From Web of "WP 3.3 RC1 neue switch_theme () Methode foobars Seitenleisten"

Wahrscheinlicher ist, dass Ihr Code die neuen Methoden zur Handhabung von Widgets durchbricht, bei denen alte Widget-Layouts gespeichert werden, wenn ein Thema wechselt.

http://wordpress.org/news/2011/11/wherefore-art-thou-widgets/

Wahrscheinlich müssen Sie die Themen wechseln, bevor Sie die Widgets anpassen, da Widgets die Themenwechsel nicht mehr überstehen oder zumindest aus älteren Einstellungen nach einem Themenwechsel wiederhergestellt werden.