Custom nav walker: Wie erreicht man den Parameter $ args?

Ich erstelle einen benutzerdefinierten Nav Walker. Mir ist aufgefallen, dass die Naval-Walker-class aus dem WordPress-core ziemlich grob geschrieben ist – viel von dem, was passiert, könnte durch verschiedene Methoden verbreitet werden, also wollte ich es versuchen.

Momentan frage ich mich, wie ich die Parameter $args (die Argumente an verschiedene Methoden übergeben) in meinem Konstruktor bekommen kann.

Wenn man genau hinsieht, gibt es den Filter wp_nav_menu_args ( source ), der dafür verwendet werden könnte, wie im folgenden Beispiel-Snippet, aber ich frage mich, ob es einen anderen Weg gibt, es zu bekommen:

  class My_Custom_Walker extends Walker_Nav_Menu { public function __construct() { $args = add_action('wp_nav_menu_args', array($this, 'get_the_args')); } public function get_the_args($args) { return $args; } […] 

Ein paar Zeilen über dem Filter gibt es wahrscheinlich das erste Vorkommen von $args , aber ist es wirklich so geschrieben, dass ich nur über den Filter darauf zugreifen kann?

Solutions Collecting From Web of "Custom nav walker: Wie erreicht man den Parameter $ args?"

WordPress Walker verwenden keine Konstruktoren. Sie werden mit der Methode walk() gestartet, die als drittes Argument übergeben wird (verwirrend nicht in der Methodensignatur widergespiegelt).

Sie können es in die Objekteigenschaft mit etwas wie diesem erfassen:

 class Args_Walker extends Walker { public function walk( $elements, $max_depth ) { // we could declare above, but would get incompatible signature $args = func_get_arg(2); $this->args = $args; return parent::walk( $elements, $max_depth, $args ); } }