2016-05-19 11 views
4

Wenn ich die Basis Walker Klasse erweitern muss ich die walk() Methode erweitern.Wordpress Walker rufen Eltern gehen() Methode

Die Methode walk() ruft jedoch keine Ergebnisse auf.

Dies sind die Ansätze, die ich versucht habe:

Es scheint mir, dass, sobald ich die walk() Dinge brechen außer Kraft setzen.

Sollte diese Methode einen bestimmten Wert zurückgeben? Sollte ich die Elternmethode anders aufrufen?

+0

Nach dem WP Kern Überprüfung sah ich, dass der Weg() -Methode eine Ausgabe zurückgibt, so haben Sie versucht, wie diese 'return parent :: Fuß (Elemente $, $ max_depth);'? – TheFallen

Antwort

2

Walker::walk wird die Zeichenfolge zurückgeben, die aus der Walk-Operation resultiert. Was Sie bekommen, ist ein Text, der mit den Methoden Walker::display_element, , Walker::start_el und so weiter erstellt wurde ... Was Sie von der übergeordneten Methode bekommen wird, ist bereits HTML-Code wahrscheinlich schwer in der richtigen Weise in einer Sekunde zu ändern Zeit, aber wenn Sie wirklich wollen, dass tun:

public function walk($elements, $max_depth) { 
    $html = parent::walk($elements, $max_depth); 

    /* Do something with the HTML output */ 

    return $html; 
} 
+0

In der Tat, Sie haben Recht, und ich vermisste dies, wie ich erwartet hatte für Eltern :: Walk mehrere Male aus dem Kern für jedes Element aufgerufen werden. Aber das ist nicht der Fall –

2

Wie @TheFallen in einem Kommentar darauf hingewiesen, gibt die Klasse Walker von Wordpress eine Ausgabe zurück

// Extracted from WordPress\wp-includes\class-wp-walker.php 
public function walk($elements, $max_depth) { 
     $args = array_slice(func_get_args(), 2); 
     $output = ''; 

     //invalid parameter or nothing to walk 
     if ($max_depth < -1 || empty($elements)) { 
      return $output; 
     } 

     ... 

Also, wenn Sie wollen Erweitern Sie die Klasse und überschreiben Sie die Methode y Sie müssen das ursprüngliche Verhalten beibehalten und die Ausgabe ebenfalls zurückgeben. Mein Vorschlag:

class Extended_Walker extends Walker { 
    public function walk($elements, $max_depth) { 
     $output = parent::walk($elements, $max_depth); 

     // Your code do things with output here... 

     return $output; 
    } 
} 
Verwandte Themen