Tablas de administración en WordPress con WP_List_Table

Tablas de administración en WordPress con WP_List_Table

WordPress nos ofrece la clase WP_List_Table, a través de la cuál podemos crear completas tablas de administración html con paginación, acciones en masa y una completa customización de forma bastante simple a través de POO.

Para ser un poco más precisos, seremos capaces de programar los siguientes aspectos:

  • Obtener los datos de una tabla de wordpress y crear paginación
  • Ordenar por los headers y footers de la tabla
  • Añadir columnas checkbox a todos nuestros registros
  • Aplicar acciones en masa (bulk actions) sobre nuestra tabla
  • Añadir los típicos botones en el hover de editar y eliminar en la administración de wordpress
  • Añadir el típico enlace para añadir un nuevo item
  • Capturar la acción de eliminar items y borrar uno o muchos
  • Crear la página donde se podrán crear o editar items (no se hará en el tutorial)

Tablas de administración en WordPress con WP_List_Table

Ahora que tenemos claro lo que vamos a hacer y su funcionamiento, debo mencionar las páginas que me han servido cómo referencia sobre WP_List_Table.

Wpengineer, grandes tutoriales sobre WordPress (en inglés)

Paulund, lo mismo que la anterior, muy buenos

Un ejemplo completo

El ejemplo lo haremos utilizando la siguiente tabla que creamos en este tutorial, sólo he cambiado el nombre de search por búsqueda.


Ahora sí, podemos empezar a crear nuestro ejemplo, lo primero de todo será crear la carpeta y el archivo principal de nuestro plugin wordpress, una vez hecho, abre dicho archivo y añade el siguiente código al principio.


Simplemente creamos la base del plugin y comprobamos si está cargada la clase WP_List_Table, necesaria para crear nuestra tabla, si no lo está la requerimos.

Ahora debemos crear nuestra clase con su constructor, la cuál extenderá WP_List_Table.


Todas las demás funciones las iremos colocando debajo de la anterior dentro de la clase, así que ahora añade debajo del constructor la siguiente que pasamos a explicar.


La función column_default() es nativa de la clase WP_List_Table y sirve para decirle que columnas serán mostradas en nuestra tabla, las que no existan serán ejecutadas en la claúsula default.


La función get_columns() setea el encabezado y footer de cada columna, es lo que aparecerá.


Esta función probablemente sea la más compleja porque toca temas aún no vistos, a groso modo lo que hace es preparar los datos en cada petición comprobando la página en la que estamos y el orden que estamos utilizando.


Con la función get_sortable_columns() le decimos a nuestra tabla por que columnas queremos ordenar y las retornamos ya que son necesarias en la función prepare_items().


Gracias a esta función añadimos los enlaces de editar y eliminar a cada fila de nuestra tabla. Si te fijas, la primera tiene como href page=udp_list_custom_formm de esta forma se irá a la página que le diremos sea en la que se añadan y editen registros.


Acciones en masa qué queremos que el campo de selección del header y footer de nuestra tabla tengan, en esete caso sólo delete para eliminar en masa.


Simplemente observa si se produce la acción delete, y si es así, obtiene la o las ids que deben ser eliminadas de nuestra tabla.

Creamos el campo html que mostrará un checkbox para las acciones en masa, se llama id porque lo estamos utilizando en el resto de funciones.


Si en algún momento no hay elementos para mostrar esta función será ejecutada mostrando el mensaje en cuestión.

Aquí finaliza nuestra clase que extiende WP_List_Table, aunque de momento sirve de poco, ya que ni tenemos el menú de administración con las opciones necesarias, ni hemos creado la función que debe pintar la tabla, así que fuera de la clase añade el siguiente código.


Primero creamos la acción contra el hook admin_menu para pintar el menú y, si te das cuenta, dentro de la función que llamamos en esta acción (udp_add_menu_items) utilizamos la función de wordpress add_menu_page, pues el quinto parámetro de dicha función es la encargada de pinta nuestra tabla, y si te fijas, está llamando a la función udp_render_list_page() que tenemos al final del código.

Así de sencillo es crear completas tablas de administración en wordpress implementando toda la lógica que necesitemos, tu trabajo ahora es completar la zona de añadir/editar que proporciona la función udp_searchs_form_page, pinta el formulario, comprueba si es una edición o no y guarda el registro, es la mejor forma de entender cómo funciona wordpress.

Descargar plugin udpadmintables.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR