Las tablas de administración de WordPress, o las tablas de listas, se usan ampliamente en las áreas de administración para enumerar publicaciones, páginas, usuarios, etc. Si alguna vez ha querido agregar tales tablas de lista con sus propios datos a su complemento, WordPress proporciona una forma ingeniosa de hacerlo con la clase wp_list_table. En este artículo, le mostraré cómo usar la API de WordPress para agregar tablas de administración similares de WordPress o listas de tabla en su pantalla de administración de complementos. Las listas de WordPress se usan en casi todas partes en el tablero. Los encontrará utilizados para mostrar publicaciones, páginas, usuarios, comentarios, etc., así como en muchos complementos populares. A lo largo de los años, se han convertido en el estándar de facto para mostrar información de tabla en WordPress.
Nota: Este artículo es para desarrolladores de WordPress Intermediate-Adventure. Necesitará conocimiento laboral sobre WordPress, PHP y API de complementos de WordPress antes de continuar. Si no está seguro o desea una actualización, le recomiendo leer lo siguiente:
Desarrollo de WordPress para principiantes: nociones introductorias
Desarrollo de WordPress para principiantes: widgets y menús
Desarrollo de WordPress para principiantes: complementos de construcción
Desarrollo del desarrollo avanzado: Introducción a la programación orientada a objetos
Para este artículo, construimos una tabla de administración personalizada con la ayuda de un complemento que utiliza construcciones orientadas a objetos. El complemento se puede descargar desde aquí para seguirlo con el artículo. Pero antes de entrar en él, comprendamos qué hacen realmente las tablas de administración.
También usaré los términos de tablas de administración y tablas de lista intercambiables para el resto del artículo. Tablas de administración de WordPress: el fondo que ya ha interactuado con una tabla de administración al acceder a páginas como publicaciones y usuarios desde el tablero. Se implementa una tabla de administración de WordPress utilizando la clase wp_list_table ubicada en /wp-admin/includes/class-wp-table.php. Proporciona el marco necesario para mostrar información en una tabla, así como para el manejo intuitivo de datos. Aquí hay una presentación general de lo que implica una tabla de administración de WordPress típica: una tabla de administración de WordPress

Notará las acciones en el bloque familiar, las acciones ordinarias con los enlaces de cruce del mouse, las opciones de paginación y pantalla, todas las cuales son una parte integral de WordPress. Aunque las opciones de pantalla no son directamente parte de wp_list_table, funcionan muy de cerca con ello. Estos permiten el control sobre la visibilidad de las columnas, así como en la página limitando la información que se muestra en la página. Cuando se usa la tabla de administración de WordPress, solo porque WordPress API ofrece una forma de construir tablas de listas nativas no significa que tenga que usarla. En mi opinión, un factor importante en la decisión de usar las tablas de administración proporcionadas por WordPress debe ser la experiencia del usuario. Con la clase WP_LIST_TABLE, WordPress se ocupa de la interfaz WP_LIST_TABLE para usar la tabla para usted. La familiaridad de trabajar con tablas de administración (en todo WordPress) y el aspecto nativo son elementos que definitivamente ayudarán a los usuarios a interactuar con los datos en su tabla de una manera perfecta.
La anatomía de la clase wp_list_table desde su comienzo en la versión 3.1.0 de WordPress, la clase WP_LIST_TABLE ha crecido cada vez más en popularidad entre los desarrolladores. WordPress Codex Class Reference para wp_list_table proporciona información completa sobre sus métodos, propiedades y uso. La siguiente infografía presenta los elementos básicos de una tabla de administración de clase. Bloques básicos de wp_list_table
Una tabla de administración más compleja también incluiría filtros y enlaces de acción adicionales sobre la tabla, como los utilizados para mostrar “publicaciones publicadas” y “bocetos”.

Ahora que tenemos una comprensión correcta de una tabla de administración y la clase WP_LIST_TABLE, para usar este conocimiento con la ayuda de un complemento personalizado. Tabla personalizada de complemento Con una lista para las operaciones de Meta Usuario Antes de ingresar los detalles de la implementación de tablas de lista, quiero abordar brevemente el complemento personalizado que he preparado para este artículo. Puedes descargarlo de aquí para seguir. Le recomiendo que lo abra en un editor apropiado e instálelo solo en una configuración local de WordPress. El complemento se basa en su propia plantilla de complemento, que es una bifurcación del proyecto original de calderas de complemento de WordPress. Es similar al proyecto original en muchos aspectos, pero también tiene soporte para los nombres y la carga automática. De esta manera, no tengo que tener prefijos únicos para cada clase o función y no alcanzo muchas instrucciones también incluye. Sin embargo, la versión mínima de PHP necesaria para mi complemento es 5.6.0.
En su mayor parte, trabajaremos con archivos de los siguientes directorios del complemento:
Inc/Core/* – para la funcionalidad básica del complemento/admin/* – para mostrar la lista en el área de administración
Inc/Bibliotecas/* – Bibliotecas de complementos
Siéntase libre de estructurar el complemento en función de sus propias preferencias de codificación y apariencia. Prefiero usar puntos de partida Boilerplate, porque se encuentran entre las mejores prácticas enumeradas en el Manual de complemento de WordPress. Propósito El complemento personalizado muestra todos los usuarios de WordPress registrados en su propia tabla de control en las opciones de pantalla, la paginación y los enlaces ordinarios para realizar operaciones con metadatos del usuario. Cada acción promedio lleva a una página de complemento para realizar estas operaciones.
Este caso de uso definitivamente no es el ideal, porque simplemente podría haber agregado la funcionalidad en la página de usuarios de WordPress predeterminada usando user_row_acciones; Sin embargo, sirve al propósito de implementar una tabla de lista cero. Entonces, comencemos. Herencia de la clase WP_LIST_TABLE Para crear una tabla de administración, deberá definir una clase infantil en su complemento que extienda la clase BASIC WP_LIST_TABLE proporcionada por WordPress. Entonces, entre las primeras cosas que debe hacer es copiar la clase wp-table.php de/wp-admin/incluir/en su complemento lo recomiendo encarecidamente porque la clase básica estaba marcada como privada y, por lo tanto, cualquier cambio potencial en La clase o sus métodos de WordPress no destruirán su complemento.
En mi complemento, copié el archivo a Inc/Bibliotecas y agregué una Directiva del espacio de nombres. Si no usa espacios de nombres, deberá prefijo todo.
Copiar el archivo de clase WP-List-Table
Luego definí mi propia clase PHP user_list_table Child en Inc/Admin/Class-Use-Table.php, que amplió la clase_list_table básica en la carpeta de mi complemento.
Cargue el esencial NuancedenStudio/1A20F5773972973E11CF8D1CF7D02786

El fragmento anterior es una implementación simple con dos métodos para ser reemplazados. Obviamente, hay mucho que hacer en la clase de niños, pero quería comenzar jugando una mesa de lista vacía.
Reladrando una tabla de lista en esta etapa, puede elegir agregar el constructor y otros métodos al niño; Sin embargo, prefiero jugar primero una tabla de lista vacía. Me parece que este enfoque de arriba a abajo es bastante efectivo, porque puedo ver el resultado de la tabla con listas en cada etapa, lo que hace que sea más fácil resolver cualquier error que se pueda deslizar. Retirar una tabla de lista generalmente requiere tres pasos:
Tabla de lista de niños de clase de instancia
Llamar preparar_items () – tratar con la preparación de datos antes de jugar la tabla
Llamar a la pantalla (), que hace que la reproducción real de la mesa
Estos dos métodos ponen las ruedas en movimiento. Entonces, veamos dónde y cómo se llaman estos métodos en el complemento.
Agregar la página del menú Menú del complemento El complemento tiene una página de submenú debajo de los usuarios, donde se muestra la tabla personalizada con las listas de usuarios.
Página de menú para la tabla de listas
Para ver cómo agregué la página del Suministro del usuario, eche un vistazo al método Define_admin_hooks () en Inc/Core/Class -it.php y el add_plin_admin_men () en inc/admin -admin.php del complemento.
Cargue el esencial NuancedenStudio/449E2ABBDBC804EF22AC5A09A7C2A4B3

Observe la devolución de llamada load_user_list_table () para add_users_page () en add_users_page (). Aquí están los métodos prepare_items () y display (). Sin embargo, en su lugar, instantizo la subclase en load_use_list_table_screen_options (), que es la devolución de llamada para la página de gancho. Se ejecuta justo antes de que se cargue la página del complemento, y la creación de la corte de clase de mi hijo permitirá a WordPress agregar automáticamente las columnas en la tabla de lista en el panel de opciones de pantalla. Aquí se agregan opciones de pantalla para controlar la paginación en la tabla de la lista.
Además, tenga en cuenta que Display () debe empaquetarse en un formulario HTML si desea aprovechar funciones como acciones de bloque. Prefiero no mezclar html, por lo que utilicé la directiva incluido_once para cargar la table-list-demo-distplay.php parcials-wp-wp-demo-distplay.php donde finalmente se invoca el método.
Cargue el esencial NuancedenStudio/FF3866ED565AEE2039719F3353DD0E152
Comprobando la configuración de la tabla de la lista de Barebone Cuando abrí la página del complemento en el menú de usuarios, WordPress notó que se solicita una lista y, debido a que no se proporcionaron datos, uno con el mensaje “No se encontraron elementos”.
Mesa de usuarios de Barebone
Observe cómo WordPress pobló los elementos HTML del formulario y la lista de la lista en la vista de inspección. También agregó automáticamente los atributos de clase para controlar el estilo para cumplir con los estándares de interfaz de usuario de WordPress. Con la línea correcta de la tabla, veamos los otros métodos para completar la tabla con listas de usuarios.
Nota: En esta etapa, WordPress se generará muchas advertencias en el solucionador de problemas debido a la implementación incompleta de la subclase. Use un complemento como un desarrollador para rastrear el WordPress Journal. Los métodos de anulación de la clase WP_LIST_TABLE que continúan con mi enfoque de arriba a abajo, continué y agregué las columnas de la tabla. Para hacer esto, debe anular get_columns () en la subclase. Wp_list_table :: get_columns () Se espera que el método tenga una matriz que contenga pares de valor clave, donde la clave es un slog de la columna y el valor del título de la columna en la tabla de la lista. Los elementos esenciales del NucreSignstudio/F92484ED8A2F1E7046B4Fe3B87E6 se cargan cargados cargados cargados cargados/cargados cargados de cargado/F92484ED8A2F1E7046B4FE3B87E6 se cargan cargados cargados cargados cargados de cargados/F92484ED8A2FE7046B4B4B87E6 .
Tenga en cuenta la columna CB, que es una columna especial que reproduce los cuadros de selección para usarlos con acciones de bloque. También modifiqué el mensaje “No hay artículos” sobrescribiendo el método no_items (). Aquí está mi tabla después de agregar los detalles de la columna.

Columnas tomadas después del reemplazo de get_columns ()
Con la formación de la tabla bien, luego agregamos el código requerido a la preparación_items () para completar los datos de la base de datos en la tabla de la lista. Wp_list_table :: prepare_items () debe proporcionar su propia implementación de prepare_items () para administrar los datos en la tabla. El método debe invocarse explícitamente justo antes de tocar la mesa. Por lo tanto, todas las operaciones relacionadas con los datos, como asumir, clasificar, paginar, filtrar, etc., deben tratarse aquí antes de que se muestre la tabla. Para cargar los datos de la tabla, interrogamos la base de datos de WordPress en fetch_table_data () y almacenamos el resultado en una matriz antes de atribuirla a la variable de elementos.

Los elementos esenciales de Nuencesignstudio/BAA43EA082C5AEB5173053470E9270E927 no se cargarán, esto no será suficiente para mostrar los datos en la tabla. Para completar la pantalla, también debe proporcionar la columna específica _*() usando los métodos de columna _*(). Wp_list_table :: column_default () en el método get_columns () anterior, proporcioné get_columns () para cada columna. Estos caracoles se pueden usar para identificar métodos de columna individuales. Aunque es una buena práctica proporcionar los métodos específicos de la columna para cada columna, simplemente puede usar el método column_default () en su lugar. WP_LIST_TABLE CLASE predeterminada en column_default () cuando no puede encontrar un método específico.
Los elementos esenciales del Nucansignstudio/32A3A50F39743617AE29F0AAAAFBAD1 están cargados
Esto hizo las columnas y pude ver los datos en mi lista.

Enumere los datos en la tabla después de agregar el método column_default ().
Wp_list_table :: column_cb () Si desea usar acciones de bloque para procesar filas, también deberá proporcionar una implementación para column_cb (), que es un caso especial del método específico de columna.
Se cargan los elementos esenciales del Nucansignstudio/112D1AFFB6792753700750153852.
Esto ha presentado cuadros de selección para todas las filas en mi tabla de lista. El valor del campo del cuadro de selección debe ser único, como user_login o una ID, por lo que puede identificar un registro distinto. Luego agregué soporte para la clasificación y la paginación en la tabla de listas. Clasificación con wp_list_table :: get_sortable_columns () get_sortable_columns () hará que las columnas especificadas se ordenen en la tabla de la lista. Sin embargo, el código para la clasificación de datos real debe escribirse en la preparación_items (). En mi ejemplo, realicé la clasificación en el SQL en sí mismo mientras tomaba los datos en fetch_table_data () como se muestra arriba. Los elementos esenciales se cargan al Nucansignstudio/4A72DC7D9B4BA34FB90F43B4E0DCE53
Cuando se realiza una clasificación en una columna, su referencia está disponible por supergloabls $ _get [‘Orderby’] y $ _get [‘Order’].
Definición de columnas ordenables en la tabla de la lista

WP_LIST_TABLE Gestión de la página :: set_pagination_args () Las opciones de pantalla que agregué anteriormente tenían los controles para limitar los datos en la tabla. Para atarlos con la tabla, utilicé get_items_per_page () y set_pagination_args () para establecer los argumentos de paginación en prepare_items ().
Cargue el esencial nuancedenstudio/2f8b8b8deee424f82437d8e0ce8c6386d9
Para reproducir datos de subconjunto para las páginas de tabla individuales, utilicé array_slice () en mi matriz de resultados antes de jugarlo.
Agregar la tabla de la lista
Luego agregué el cuadro de búsqueda, las acciones y las acciones en una fila en mi lista. Wp_list_table :: search_box () Para agregar un cuadro de búsqueda, debe empacarlo en un formulario con un campo oculto para asegurarse de que se envíe a la página del complemento. Los agregué a parcials-wp-list-table-demo-dislay.php justo antes de la pantalla (). La manipulación de los datos para la búsqueda se realiza en la preparación_items (). El esencial NuanceSignStudio/095BD1CD8C0D64F90806D85A3F748 está cargado.
Agregar un cuadro de búsqueda a la tabla de la lista

Cuando se realiza una búsqueda, la clave de búsqueda estará disponible a través del superglobal $ _request [‘s’]. En mi ejemplo, he manipulado la matriz de resultados usando Array_Filter y la clave de búsqueda.
Cargue el esencial nuancedenstudio/6b77dc8ddf5d5567c9e0e65e3fd3e610
Wp_list_table :: get_bulk_actions () Las acciones de bloque son agregadas por get_bulk_acciones () y debe especificar la acción en una matriz asociativa. El tratamiento real de las acciones debe realizarse en la preparación_items ().
Cargue el esencial nuancedenstudio/be373a33f5b3d6078df0e8fb058b9276

Al enviar la acción en el bloque, se establecerán dos variables Action y Action2. El valor dependerá de la acción masiva que aplicó, la que está arriba o debajo de la tabla.
Acciones en bloque y acciones seguidas en la lista con la lista
En mi complemento, un método Handle_Table_Action () Llama en prepare_items () se ocupa del procesamiento de las acciones de los usuarios.

Se cargan los elementos esenciales del Nucansignstudio/9BECB8B971B49D3274465062572507C.
Una vez que se verifica Nonce, hemos cargado Parcials-WP List-Table-Demo-Bulk-Download.php en Inc/Admin/Views/para administrar acciones de bloque. Finalmente, agregué los enlaces de acción de la tabla. Agregar enlaces ordinarios a la tabla de lista Para agregar enlaces de acción de fila, debe proporcionar una implementación específica para la columna de la tabla que debe mostrar los enlaces de acción. En mi complemento, agregué dos enlaces de acción y vea meta en la columna user_login. Se carga el esencial nuanceesignstudio/d92c7b037b8a9496b86beb1392e90.
En mi ejemplo, cuando se realiza una acción común, la identificación de usuario, una nonce personalizada y la acción se proporcionan como parte de los parámetros de URL. /users.php?page=nds-wp-list-table-demo&action=view_useta&user_id=11&_wpnonce=9c38dd6c2c se utilizan para administrar la acción del usuario en prepare_items (). Gestioné las acciones ordinarias en el mismo método handle_table_actions () que las acciones en el bloque.
Cargue el esencial NuancedenStudio/5A488A8B057D63F2274A8F8AEF682E2E
Puede identificar la acción realizada con Current_Action () y dirigir al usuario en consecuencia. Eche un vistazo a las vistas Parcials-WP-List-Table-Demo-View-Useta.php en Inc/Admin/Views para ver cómo procesé la solicitud para la meta acción de vista. ¡Eso es todo! Aquí está la tabla con listas completadas.
Tabla personalizada con listas de usuarios construidas con la clase wp_list_table

La conclusión espero que hayas encontrado este elemento útil. Aquí hay algunos ejemplos adicionales del uso de la clase WP_LIST_TABLE en complementos populares:
WooCommerce
El calendario de los eventos
Descargas digitales ligeras
¿Usaste tablas de listas?Cuéntanos tu experiencia en los comentarios a continuación.
Administrador de WP

Agregar tablas de administración de WordPress a los complementos WP_LIST_TABLE
Tags Agregar tablas de administración de WordPress a los complementos WP
homefinance blog