Als Theme- oder Plugin-Entwickler könnte es hilfreich sein, bestimmte Aktionen auszuführen, sobald ein WordPress Menü geändert bzw. aktualisiert wird. Wie das funktioniert, erkläre ich in diesem Artikel.

Der WordPress-Filter wp_update_nav_menu (?) wird genau immer dann ausgeführt, wenn wir ein Menü in der WordPress Administration aktualisieren. Zum Beispiel, wenn ein neuer Menüpunkt hinzugefügt wurde, oder sich der Link eines Navigationselements geändert hat.

Der folgende Code-Schnipsel ist in diesem Fall sehr hilfreich, wenn wir genau zu diesem Event, also zur Aktualisierung des WordPress Menüs, eine Aktion ausführen wollen:

Aktionen nur für bestimmte Menüs ausführen

Die obere Methode wird immer ausgeführt, unabhängig davon welches WordPress Menü wir aktualisieren. Was können wir machen, wenn wir jedoch nur eine Aktion bzw. eine Funktion ausführen möchten, sobald ein spezielles Menü aktualisiert wird? Auch dafür gibt es eine Lösung.

Fallbeispiel: Nehmen wir an, wir wollen eine Aktion durchführen wenn das Footer Menü aktualisiert wird. Ein Footer Menü bietet sich regelrecht dafür an, die Ausgabe in einem WordPress Transienten zu speichern, um Datenbankanfragen zu reduzieren. In diesem Fall könnten wir bspw. einen kleinen Menü-Cache für das Footer Menü erstellen und den Cache immer dann leeren, wenn es aktualisiert wird.

Dazu benötigen wird zunächst die ID des Footer Menüs. Diese ID wird beim Registrieren eines WordPress Menüs über register_nav_menus() (?) definiert. Das folgende Beispiel zeigt, wo die Menü ID festgelegt ist:

Um jetzt eine Aktion nur für das Footer Menü auszuführen, ziehen wir die WordPress Funktion get_nav_menu_locations() zu Hilfe. Denn darüber erfahren wir, welche Menüs in einem WordPress Theme vorhanden sind. Nun müssen wir das nur noch wie folgt in die obere Funktion einbauen und abfragen. Das Ergebnis würde dann so aussehen:

Eine Aktion ausführen wenn das WordPress Menü aktualisiert wird Wertung: 5 / 5 (5Stimmen)
Der Autor
Veröffentlicht von
Martin Jost
Weiterlesen
Schreibe einen Kommentar

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