Navi­ga­ti­ons­me­nüs in WordPress

In Word­Press wer­den Navi­ga­ti­ons­me­nüs unab­hän­gig von ihrer Posi­ti­on erzeugt und gefüllt. Die Posi­ti­on wird spä­ter defi­niert. Die fol­gen­de Pro­ze­dur ist eine Mög­lich­keit, ein Navi­ga­ti­ons­me­nu anzu­le­gen und als Haupt­me­nü darzustellen:

  1. Ein neu­es Navi­ga­ti­ons­me­nü anle­gen
    $menu_id = wp_create_nav_menu('my-nav-menu');
  2. Menü­ein­trä­ge erzeu­gen, ent­we­der als Haupt­me­nü ohne Link
    $item_id = wp_update_nav_menu_item($menu_id, 0, [
    'menu-item-title' => __('main menu', 'textdomain'),
    'menu-item-classes' => 'my_class',
    'menu-item-url' => '',
    'menu-item-parent-id' => 0,
    'menu-item-status' => 'publish'
    ]);

    oder als Unter­me­nü mit Link auf eine Sei­te
    wp_update_nav_menu_item($menu_id, 0, [
    'menu-item-title' => __('submenu', 'textdomain'),
    'menu-item-classes' => 'my_other_class',
    'menu-item-url' => home_url("/my_page"),
    'menu-item-parent-id' => $item_id,
    'menu-item-status' => 'publish'
    ]);
  3. Das Menü an einer der im The­me defi­nier­ten Posi­tio­nen anzei­gen. Wel­che Posi­tio­nen vor­han­den sind, hängt vom The­me ab. Die Posi­ti­on „pri­ma­ry” habe ich zwar bis­her in jedem The­me gefun­den, prü­fe es aber trotz­dem:
    $locations = get_nav_menu_locations();
    if (array_key_exists('primary', $locations)) {
    $locations['primary'] = $menu_id;
    set_theme_mod('nav_menu_locations', $locations);
    }

    Falls „pri­ma­ry” nicht exis­tiert, muss die Menü­po­si­ti­on in der Admin-Ober­flä­che unter Design -> Menus gesetzt werden.

Das gan­ze funk­tio­niert unter den her­kömm­li­chen The­mes, die noch über die „Design”-Menüs kon­fi­gu­riert werden.

Ab Twen­ty Twen­ty-Two gibt es den „Web­site-Edi­tor”, und eini­ge Unter­punk­te von „Design” sind ver­schwun­den, unter ande­rem auch „Menus”. Dann las­sen sich den Menüs kei­ne Posi­tio­nen zuord­nen und das „pri­ma­ry” Menu ist u.U. nicht sicht­bar. Die Funk­ti­on get_nav_menu_locations() lie­fert ein lee­res Array zurück. Eine Lösung dafür habe ich noch nicht gefunden.

Quel­len:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

achtzehn − neun =