Theme automatisch wählen Standard-Nav-Menü

Ich habe ein WordPress Theme entwickelt. Ich möchte nach der Aktivierung sehen können, ob bereits ein Menü im Backend erstellt wurde. Wenn es vorhanden ist, wählen Sie es aus und verwenden Sie es als primäres Menü, aber erstellen Sie andernfalls ein neues Menü mit den bereits vorhandenen Seiten auf oberster Ebene und registrieren Sie es als primäres Menü.

Ich kann nicht viel darüber finden, kann jemand Licht abcasting?

Wir haben Code gefunden, der das aktuelle Standardmenü überprüft

add_action( 'after_switch_theme', 'mytheme_menu_fix' ); function mytheme_menu_fix() { $old_theme = get_option( 'theme_switched' ); $old_theme_mods = get_option("theme_mods_{$old_theme}"); $old_theme_navs = $old_theme_mods['nav_menu_locations']; $new_theme_navs = get_theme_mod( 'nav_menu_locations' ); if (!$new_theme_navs) { $new_theme_locations = get_registered_nav_menus(); foreach ($new_theme_locations as $location => $description ) { $new_theme_navs[$location] = $old_theme_navs[$location]; } set_theme_mod( 'nav_menu_locations', $new_theme_navs ); } } 

Das funktioniert gut, wir müssen nur noch sortieren, wenn kein primäres Nav ausgewählt ist. IE auf einer neuen Installation des Themas

Solutions Collecting From Web of "Theme automatisch wählen Standard-Nav-Menü"

Sie können has_nav_menu() , um zu überprüfen, ob dem Standort ein Standort zugewiesen ist. Wenn dies der Fall ist, verwenden Sie wp_get_nav_menu_items() , um das Menü zu duplizieren, und weisen Sie es dann dem Speicherort zu, den Sie in Ihrem wp_get_nav_menu_items() registrieren.

Hier ist, was ich im Sinn habe. Es ist von der Spitze meines Kopfes und wird mehr Code und Tests benötigen, aber hoffentlich ist es ein guter Anfang für Sie:

 function wpse112672_menus() { if( has_nav_menu( 'old_theme_menu_location' ) { $old_menu = wp_get_nav_menu_items( 'old_menu_id' ); register_nav_menu( 'new_theme_menu_location' ); $new_menu = wp_nav_menu( $args ); return $new_menu; } else { return wp_page_menu(); } }