wp_nav_menu in einem Objekt – wie gehe ich mit Fallback_cb um?

Ich versuche eine class zu erstellen, mit der ich ein Navigationsmenü erstellen kann. Hier ist eine vereinfachte Version von dem, was ich benutze:

class PJ_Menu { function make_menu() { $args = array( 'theme_location' => 'location', 'fallback_cb' => array( $this, 'pj_page_menu' ), ); wp_nav_menu( $args ); } function pj_page_menu() { // a bunch of code here } } new PJ_Menu(); 

Ich kann anscheinend nicht herausfinden, was ich im Parameter fallback_cb brauche. array( $this, 'pj_page_menu' ); hat nicht funktioniert, und auch nicht 'self::pj_page_menu' . Fehle ich etwas Offensichtliches oder ist das nicht möglich?

Solutions Collecting From Web of "wp_nav_menu in einem Objekt – wie gehe ich mit Fallback_cb um?"

Das Argument fallback_cb wird verwendet, wenn das Menü nicht existiert – das heißt, wenn kein Menü mit dem richtigen Namen vorhanden ist. Ich werde nicht anders benutzt. Überprüfen Sie den Codex . Standardmäßig ist der Fallback wp_page_menu .

Ihr Code sieht für mich richtig aus, wenn ich eine classnmethode als Callback verwende, aber ich vermute, dass das, was Sie wirklich wollen, das Argument walker , nicht fallback_cb . Das Argument walker wird immer dann verwendet, wenn Ihr Menü erstellt wird, und nicht nur als Fallback, wenn etwas schief geht.

wp_nav_menu ruft wp_nav_menu PHP auf fallback_cb . Um eine classnmethode als dieses Argument zu übergeben, muss die Methode statisch sein und Sie müssen den classn- und Methodennamen übergeben.

 static function pj_page_menu() { // a bunch of code here } 

In der is_callable Dokumentation von PHP sollte fallback_cb is_callable :

 'fallback_cb' => array('PJ_Menu', 'pj_page_menu') 

oder für PHP> = 5.2.3

 `fallback_cb` => 'PJ_Menu::pj_page_menu'