Weisen Sie Menüs zu Themenorten mit Motivaktivierung zu

Eine Website verwendet das untergeordnete Thema “child1”. Wenn diese Website zu einem anderen untergeordneten Thema mit dem Namen “child2” wechselt, werden auch ihre Widgets verschoben, aber die Motivspeicherorte werden nicht verschoben. Wie kann ich Menüs automatisch den Motivpositionen bei der Aktivierung des Themas zuweisen?

Ich fand diese Lösung von http://wordpress.org/support/topic/how-to-assign-a-wordpress-3-menu-to-primary-location-programmatically

$theme = get_current_theme(); $mods = get_option("mods_$theme"); $key = key($mods['nav_menu_locations']); $mods['nav_menu_locations'][$key] = $menu_id; update_option("mods_$theme", $mods); 

Gibt es einen besseren WordPress-Weg, um das zu beheben? (Verwandtes Trakthema: http://core.trac.wordpress.org/ticket/18720 )

Solutions Collecting From Web of "Weisen Sie Menüs zu Themenorten mit Motivaktivierung zu"

Nun, ich habe eine Lösung geschrieben, um es hier zu schreiben:

 /* This action copies old theme's theme location saves to new theme if new theme doesnt have saves before. */ add_action( 'after_switch_theme', 'ajx_theme_locations_rescue' ); function ajx_theme_locations_rescue() { // bug report / support: http://www.unsalkorkmaz.com/ // We got old theme's slug name $old_theme = get_option( 'theme_switched' ); // Getting old theme's settings $old_theme_mods = get_option("theme_mods_{$old_theme}"); // Getting old theme's theme location settings $old_theme_navs = $old_theme_mods['nav_menu_locations']; // Getting new theme's theme location settings $new_theme_navs = get_theme_mod( 'nav_menu_locations' ); // If new theme's theme location is empty (its not empty if theme was activated and set some theme locations before) if (!$new_theme_navs) { // Getting registered theme locations on new theme $new_theme_locations = get_registered_nav_menus(); foreach ($new_theme_locations as $location => $description ) { // We setting same nav menus for each theme location $new_theme_navs[$location] = $old_theme_navs[$location]; } set_theme_mod( 'nav_menu_locations', $new_theme_navs ); } } 

Ich weiß, dass Sie dieses Problem schon vor langer Zeit hatten, aber da diese Seite mit den ersten paar aufgetaucht ist, dachte ich daran, meine Lösung zu teilen, falls jemand sie braucht.