Entendiendo la Clase Walker

Los elementos de menú, las páginas y las taxonomías (jerárquicas) son todos ejemplos de datos con una estructura en forma de árbol: los términos pueden tener padres, hijos y hermanos. Por lo general, nos gustaría reflejar esta estructura en el formato HTML. Para mostrar un menú, por ejemplo, queremos que el HTML sea de una lista de enlaces de "nivel superior", con listas anidadas de sus hijos, que a su vez contengan listas anidadas de sus hijos, y así sucesivamente. Este tutorial lo guiará a través de una clase que proporciona WordPress, que hace que la realización de este marcado sea extremadamente simple.


¿Qué es la clase Walker??

La clase walker es una clase abstracta diseñada para ayudar a atravesar y mostrar elementos que tienen una estructura jerárquica (o similar a un árbol). En realidad, no 'hace' (en el sentido de generar HTML) cualquier cosa. Simplemente traza cada rama de su árbol: tiene que ser extendido por otras clases que le dicen qué hacer para cada elemento con el que se encuentra. WordPress proporciona sus propias clases ampliadas, tales como:

  • Walker_Nav_Menu - para visualizar el HTML para los menús de navegación
  • Walker_Page - para mostrar una lista de páginas
  • Walker_Category - para mostrar una lista de términos de taxonomía.

Cada una de estas clases extiende la clase Walker simplemente dictando los resultados de la clase en cada elemento y nivel del árbol. Para desmitificar esta clase, analizaremos sus métodos principales y un par de ejemplos de cómo usarla. La clase en sí se puede encontrar aquí..


Caminando el arbol

Caminar

caminar ($ elementos, $ max_depth)

La clase walker se inicia con el método walk y es este método el que devuelve el HTML una vez que se ha generado. Acepta dos argumentos:

  1. Un conjunto de elementos que deseamos mostrar, que tendrá algún tipo de relación padre-hijo.
  2. $ max_depth - establece cuántas generaciones exploramos
  3. Ok 3 ... Si rozas la superficie de este método, verás que puedes pasar argumentos adicionales que se reúnen en una matriz: $ args. Esto luego se pasa a otros métodos en la clase

El método de caminar selecciona los elementos de "nivel superior", aquellos sin padres, y los coloca en una sola matriz. El resto, los hijos, se colocan en una segunda matriz donde la clave es el ID de su padre (es una matriz bidimensional, ya que un padre puede tener varios hijos):

 $ children_elements = array ('1' => array () // Array de elementos correspondientes a los hijos de 1, '4' => array () // Array de elementos que corresponden a los hijos de 4);

A continuación, recorre cada uno de los elementos principales y aplica el método. elemento de visualización.

Display_Element

display_element ($ element, & $ children_elements, $ max_depth, $ depth = 0, $ args, & $ output)

Como el nombre sugiere elemento de visualización Es responsable de mostrar un elemento en nuestro árbol. De hecho, llama a varias funciones para hacer esto. Estas funciones se dejan en blanco deliberadamente en la clase Walker, y son éstas las que se modifican en las clases ampliadas, ya que determinan el HTML real devuelto. Éstos incluyen:

  • start_lvl - una función para devolver el HTML para el inicio de un nuevo nivel. En el caso de las listas, esto sería el comienzo de una nueva 'sub-lista', y por lo tanto sería responsable de devolver la
      etiqueta
    • end_lvl - Llamado cuando hayamos terminado un nivel. En el ejemplo del menú de navegación, esta función es responsable de finalizar la sub-lista con una etiqueta de lista de cierre
  • start_el - la función responsable de mostrar el elemento actual en el que estamos. En el caso de los menús, esto significa
  • etiqueta y enlace del artículo.
  • end_el - La función llamada después de un elemento y todos sus elementos secundarios se han mostrado. Para nuestro ejemplo de menú esto significa devolver un cierre.
  • etiqueta.

Entonces que hace elemento de visualización en realidad hacer? En realidad es donde tiene lugar toda la magia de la clase Walker. Primero echemos un vistazo a los argumentos que se dan:

  • $ elemento - Este es el elemento en el que estamos actualmente en nuestro árbol.
  • $ children_elements - una serie de todos elementos hijos (no solo hijos del elemento mencionado anteriormente). Esta es la segunda matriz formada en el caminar Método y las claves son los identificadores del padre..
  • $ max_depth - ¿Qué tan abajo podemos explorar?
  • $ profundidad - que tan abajo estamos actualmente
  • $ args - argumentos opcionales (mencionados anteriormente)
  • $ salida - El HTML hasta ahora. Esto se añade a medida que exploramos más del árbol..

los elemento de visualización método de primeras llamadas start_el que se encarga de mostrar el elemento. Exactamente cómo lo hace depende del contexto. Para un menú desplegable puede ser