wake-up-neo.net

Wie programmiere ich ein Menü als Hauptmenü?

Ich habe bereits gelesen Wie wechsle ich programmgesteuert zwischen den Hauptmenüs? aber es beantwortet die Frage nicht wirklich. Die akzeptierte Antwort ist nur zwei Problemumgehungen, aber keine tatsächliche Antwort auf die Frage.

Wenn mein Thema aktiviert ist, erstelle ich mehrere Menüs und möchte eines davon als Hauptmenü kennzeichnen.

Gibt es eine WordPress-Funktion, mit der ich mein programmgesteuert erstelltes Menü zum Hauptmenü machen kann? Ich bin ein erfahrener Entwickler, aber ich bin neu in WordPress und die Terminologie in den Funktionen macht es sehr schwer, den Codex zu durchsuchen, um das zu finden, wonach ich suche. Jede Hilfe wird geschätzt.

2
Kenny Wyland

Ich durchforstete den WordPress-Code, um zu sehen, was passierte, als ich das Formular von der Admin-Benutzeroberfläche abschickte, um zu sehen, welche Funktion es aufrief (und eine var_export() für die übergebene Variable ausführte), und sah, dass es set_theme_mod( 'nav_menu_locations', $menu_locations ); aufrief. Ich habe meinen Code aktualisiert, um dies zu verwenden, und es scheint zu funktionieren:

$locations = get_theme_mod('nav_menu_locations');
$locations['primary'] = $menu_id;
set_theme_mod( 'nav_menu_locations', $locations );

Eines der Dinge, die mich abschreckten, als ich versuchte, herauszufinden, wie das gemacht werden soll, ist, dass in der Dokumentation für get_theme_mod() eine Zeichenfolge zurückgegeben wird, in diesem Fall jedoch ein Array zurückgegeben wird, was ich nicht für richtig hielt zur Arbeit gehen.

4
Kenny Wyland

Klingt so, als ob Sie danach suchen:

Zu functions.php hinzufügen

$locations = get_theme_mod('nav_menu_locations');
$locations['primary-menu'] = $term_id_of_menu;
set_theme_mod( 'nav_menu_locations', $locations );

Quelle: https://stackoverflow.com/a/19637827/7243209

2
Liam Stewart