0
Hinzufügen von WordPress-Admin-Tabellen zu Plugins mit WP_List_Tableby marvelads.comon.Hinzufügen von WordPress-Admin-Tabellen zu Plugins mit WP_List_Table  Die WordPress-Verwaltungstabelle oder Listentabelle wird im Administrationsbereich ausführlich für das Buchen von Listen, Seiten, Benutzern usw. verwendet. Wenn Sie jemals eine Listentabelle mit Ihren eigenen Daten zu Ihrem Plugin hinzufügen möchten, bietet WordPress eine gute Möglichkeit, dies mit der WP_List_Table-Klasse zu tun. In diesem Artikel werde ich Ihnen zeigen, wie Sie die WordPress-API verwenden, […]

 

Die WordPress-Verwaltungstabelle oder Listentabelle wird im Administrationsbereich ausführlich für das Buchen von Listen, Seiten, Benutzern usw. verwendet.

Wenn Sie jemals eine Listentabelle mit Ihren eigenen Daten zu Ihrem Plugin hinzufügen möchten, bietet WordPress eine gute Möglichkeit, dies mit der WP_List_Table-Klasse zu tun.

In diesem Artikel werde ich Ihnen zeigen, wie Sie die WordPress-API verwenden, um dem Admin-Bildschirm Ihres Plugins eine administrative Tabelle oder eine Liste von Tabellen wie WordPress hinzuzufügen

Die WordPress-Listentabelle wird fast überall auf dem Dashboard verwendet. Sie finden es zum Anzeigen von Beiträgen, Seiten, Benutzern, Kommentaren etc. und auch in vielen gängigen Plugins. Im Laufe der Jahre haben sie sich zum Standard für die Anzeige von tabellarischen Informationen über WordPress entwickelt.

Hinweis: Dieser Artikel richtet sich an fortgeschrittene WordPress-Entwickler. Sie benötigen Kenntnisse über WordPress, PHP und WordPress Plugin API, bevor Sie fortfahren. Wenn Sie unsicher sind oder eine Auffrischung wünschen, empfehle ich Ihnen Folgendes zu lesen:

Für diesen Artikel habe ich eine benutzerdefinierte Admin-Tabelle mit Hilfe eines Plugins erstellt, das objektorientierte Konstruktion verwendet. Dieses Plugin kann von hier heruntergeladen werden, um dem Artikel zu folgen. Aber bevor wir darüber sprechen, wollen wir verstehen, was eine tatsächliche Admin-Tabelle ist.

Ich verwende die Begriffe Admin Table und Tables abwechselnd für den Rest des Artikels.

WordPress Admin Tabelle – Hintergrund

Sie haben mit dem Admin Desk interagiert, wenn Sie im Dashboard auf Seiten wie Posts und Benutzer zugreifen. Die WordPress-Administrationstabelle wird mithilfe der [UUD WP_List_Table -Klasse unter /wp-admin/includes/class-wp-list-table.php implementiert. Es bietet den notwendigen Rahmen für die tabellarische Anzeige von Informationen und die intuitive Manipulation von Daten. Hier ist ein Überblick über die üblichen WordPress Admin-Tabellen, die enthalten:

WordPress Admin-Tabelle “Breite =” 600 = Höhe 591 “/>
Tabellenverwaltung WordPress

Sie sehen häufige Massenaktionen, Linienaktionen mit Hover-Links, Paginierungsoptionen und Bildschirme, die seitdem zu einem festen Bestandteil von WordPress geworden sind.

Während Bildschirmoptionen nicht direkt zu WP_List_Table gehören, arbeiten sie sehr eng damit zusammen. Sie ermöglichen die Kontrolle über die Sichtbarkeit von Spalten und Paginierung, indem die auf der Seite angezeigten Informationen begrenzt werden.

Verwendung von WordPress-Admin-Tabellen
Nur weil die WordPress-API eine Möglichkeit bietet, Originaltabellen zu erstellen, bedeutet dies nicht, dass die Benutzer sie verwenden sollten. Meiner Meinung nach ist ein großer Faktor bei der Entscheidung, WordPress zu verwenden, vorgesehen. Die Admin-Tabelle sollte eine Benutzererfahrung sein. Mit Klasse WP_List_Table WordPress übernimmt die Vorbereitung von UI-Tabellen für Sie. Vertrautheit mit dem Admin Desk (alle WordPress) und dem ursprünglichen Look and Feel sind Elemente, die den Benutzern sicher helfen, mit Ihren Tabellendaten auf eine Weise zu interagieren, die nicht glatt ist.

Anatomie der Klasse WP_List_Table

Seit seiner Einführung in Version 3.1.0 von WordPress hat die WP_List_Table-Klasse bei Entwicklern an Popularität gewonnen. Die WordPress Codex-Klassenreferenz für WP_List_Table enthält umfassende Informationen zu den Methoden, deren Eigenschaften und deren Verwendung.

Die folgende Infografik zeigt die Bausteine ​​des Admin-Desks der Klassenreferenz.

Komplexere Admin-Tabellen enthalten außerdem zusätzliche Dropdown-Filter und Aktionslinks über der Tabelle, die zur Anzeige von “Angezeigte Beiträge” und “Entwürfe” verwendet werden.

Jetzt haben wir ein gutes Verständnis von Admin-Desk und Klasse [UANGMAKMURTUAL verwenden wir dieses Wissen, um spezielle Plugin-Hilfe zu verwenden.

Benutzerdefiniertes Tabellenlisten-Plugin für Benutzermethode

Bevor ich auf die Implementierungsdetails der Tabelle eingehen möchte, möchte ich kurz auf die speziellen Plugins eingehen, die ich für diesen Artikel eingerichtet habe. Sie können es von hier herunterladen, um zu folgen. Ich empfehle, dass Sie es im entsprechenden Editor geöffnet haben und installieren Sie es nur auf der lokalen WordPress-Setup .

Dieses Plugin basiert auf meiner eigenen Plugin-Vorlage, die eine Gabel des ursprünglichen Boilerplate WordPress Plugin Projekts ist. Dies ist in vieler Hinsicht dem ursprünglichen Projekt ähnlich, unterstützt aber auch Namespace und Autoloading. Auf diese Weise brauche ich kein eindeutiges Präfix für jede Klasse oder Funktion und ende nicht mit vielen einschließlich und die Anweisungen erfordern. Die für mein Plugin benötigte PHP-Mindestversion ist jedoch 5.6.0.

Die meisten von uns werden mit Dateien im folgenden Plugin-Verzeichnis arbeiten:

  • inc / core / * – für Plugin-Kernfunktionalität
  • inc / admin / * – Listentabelle im Administrationsbereich anzeigen
  • inc / Bibliotheken / * – Bibliothek für Plug-ins

Sie können Plugins basierend auf Ihren eigenen Codierungs- und Layoutvorgaben organisieren. Ich bevorzuge es, Boilerplate Early Points zu verwenden, da es viele Best Practices gibt, die im WordPress Plugin Handbook aufgelistet sind.

[1945902] Bestimmungsort
Benutzerdefiniertes Plugin zeigt alle WordPress-Benutzer an, die in einer eigenen Admin-Tabelle registriert sind, mit Kontrolle über Bildschirm-, Paginierungs- und Aktionszeilenoptionen zum Durchführen von Operationen an Benutzer-Metadaten. Jede Aktionszeile führt zur Plugin-Seite, um diese Operation auszuführen.

Dieser Anwendungsfall ist sicherlich nicht ideal, weil ich der Standard-WordPress-Benutzerseite mithilfe von user_row_actions Funktionen hinzufügen kann; Es funktioniert jedoch, um Tabellenliste von Nullen anzuwenden. Also lass uns anfangen.

Vererbungsklasse WP_List_Table

Um eine Admin-Tabelle zu erstellen, müssen Sie eine untergeordnete Klasse in Ihrem Plugin angeben, die die WP_List_Table Klasse von WordPress erweitert. Unter den ersten Schritten sollten Sie die Datei class-wp-list-table.php unter / wp-admin / includes / in Ihr Plugin kopieren. Ich empfehle dies dringend, da die Kernklassen als privat markiert wurden und alle möglichen Änderungen in der Klasse oder Methode von WordPress Ihr Plugin nicht beschädigen.

In meinem Plugin habe ich die Datei in inc / libraries kopiert und die Namespace-Anweisung hinzugefügt. Wenn Sie Namespaces nicht verwenden, müssen Sie alles voranstellen.

Ich definiere dann die eigene PHP-Klasse meines Kindes User_List_Table in inc / admin / class-user-listetabelle.php Erweiterungsbasis class WP_List_Table Ordner inc / Bibliotheken mein Plugin.

Das obige Snippet ist eine Barebone-Implementierung mit zwei zu ersetzenden Methoden. Offensichtlich gibt es viele Dinge, die in der untergeordneten Klasse erledigt werden müssen, aber ich möchte zunächst damit beginnen, die leere Tabelle zuerst zu erstellen.

Tabellen erstellen

In diesem Stadium können Sie der untergeordneten Klasse Konstruktoren und andere Methoden hinzufügen. Ich bevorzuge es jedoch, den Tisch zuerst leer zu machen. Ich finde diesen Top-Down-Ansatz effektiver, da ich die Ausgabe der Listentabelle in jeder Phase sehen kann, wodurch es einfacher wird, mögliche Fehler zu beseitigen.

Das Erstellen einer Tabellenliste erfordert normalerweise drei Schritte:

  • Instanziierte Klasse Liste Kindertabelle
  • Aufruf prepare_items () – der die Datenvorbereitung vor der Erstellung der Tabelle behandelt
  • Aufruf display () – das die eigentliche Tabellen-Darstellung durchführt

Mit beiden Methoden wird das Rad bewegt. Sehen wir uns also an, wo und wie diese Methode im Plugin aufgerufen wird.

[1945902] Hinzufügen von Plugins Menüseite
Dieses Plugin hat eine Untermenüseite unter Benutzer, dort wird eine Benutzerdefinierte Benutzerliste angezeigt.

add_plugin_admin_menu () Methode auf inc Um zu sehen, wie ich die Benutzeruntermenüseite hinzufüge, / admin / class-admin.php Plugin.

Rückruf melden load_user_list_table () bis add_users_page () im Mittelpunkt. Hier werden die Methoden prepare_items () und display () aufgerufen.

Ich instanziere stattdessen die Unterklasse in load_user_list_table_screen_options () was ein Rückruf für den Seitenhaken ist. Es wird direkt vor dem Laden der Plugin-Seite ausgeführt. Wenn Sie hier eine Instanz meiner untergeordneten Klasse erstellen, kann WordPress automatisch eine Tabellenspalte im Optionenbereich des Bildschirms hinzufügen. Die Bildschirmoptionen zur Steuerung der Paginierung in der Listentabelle wurden hier ebenfalls hinzugefügt.

Beachten Sie, dass display () in HTML-Form eingebunden werden muss, wenn Sie Features wie Massenaktionen nutzen möchten. Ich ziehe es vor, HTML nicht zu mischen, daher verwende ich include_once Anweisungen zum Laden von partials-wp-listentabellendemo-display.php wo diese Methode schließlich aufgerufen wird.

Überprüfung der Barebone-Setup-Tabelle

Wenn ich die Plugin-Seite im Menü Benutzer öffne, sieht WordPress, dass die Tabelle angefordert wird und da keine Daten zur Verfügung gestellt werden, wird eine Nachricht mit dem Eintrag “Objekt nicht gefunden” angezeigt.

Benutzerliste Table Barebone
"Beachten Sie, wie WordPress HTML form Elemente füllt und Tabellen in der Kontrollansicht auflistet. Außerdem wird automatisch das Attribut der Klasse hinzugefügt, um das Styling so zu steuern, dass es der Standard-WordPress-Benutzeroberfläche entspricht. Sehen wir uns mit der korrekten Rendering-Tabelle andere Methoden an, um die Benutzerliste zu vervollständigen.

Hinweis: In diesem Stadium generiert WordPress aufgrund von unvollständigen Unterklassenimplementierungen viele Warnungen in Debug-Protokollen. Verwenden Sie Plugins wie Entwickler nur für WordPress-Protokolle.

Überschreibungsmethode Klasse WP_List_Table

Wenn ich meinen Top-Down-Ansatz fortsetze, füge ich eine Tabellenspalte hinzu. Dazu müssen Sie get_columns () in der Unterklasse ersetzen.

WP_List_Table :: get_columns ()

Diese Methode erwartet ein Array mit Schlüsselwert Paaren, wobei der Schlüssel die Spalte slug ist und dessen Wert der Text der Spaltenüberschriften in Ihrer Tabelle ist.

]

Nachrichtenspalte cb ist eine spezielle Spalte, die Checkboxen für Massenaktionen verwendet. Ich habe auch die Meldung “Keine Elemente gefunden” durch die übergeordnete Methode no_items () geändert. Hier ist meine Tabelle nach dem Hinzufügen von Spaltendetails.

Bei wohlgeformten Tabellen fügte ich dann den notwendigen Code prepare_items () hinzu, um Daten aus der Datenbank in die Tabellen einzufügen.

WP_List_Table :: prepare_items ()

Sie müssen Ihre eigene Implementierung prepare_items () angeben, um die Tabellendaten zu verarbeiten. Diese Methode sollte explizit aufgerufen werden, bevor die Tabelle erstellt wird. Somit sollten alle Operationen, die mit Daten wie Abrufen, Sortieren, Bestrahlung, Filterung etc. verbunden sind, hier angesprochen werden, bevor die Tabelle angezeigt wird.

Um die Datentabelle zu laden, habe ich in fetch_table_data () die WordPress-Datenbank gefragt und das Ergebnis im Array gespeichert, bevor ich es der item

Dies reicht jedoch nicht aus, um die Daten in der Tabelle anzuzeigen. Um die Sicht zu vervollständigen, müssen Sie auch eine spaltenspezifische Implementierung mithilfe der Spalte _ * () bereitstellen.

WP_List_Table :: column_default ()

In der oben genannten Methode get_columns () gebe ich die Spalte für jede Spalte an. Diese Schnecke kann verwendet werden, um einzelne Spaltenmethoden zu identifizieren. Dies ist zwar eine bewährte Methode, um für jede Spalte eine spaltenspezifische Methode bereitzustellen, Sie können aber auch die Methode column_default () verwenden. Standard WP_List_Table Standardwert column_default () wenn keine spezielle Methodenspalte gefunden werden kann.

Dadurch wird eine Spalte generiert, und ich kann die Daten in meiner Tabelle sehen.

 wp-list-table-display-column-data "width =" 600 = height 427
Nach dem Hinzufügen der Methode column_default ()

]

WP_List_Table :: column_cb ()

Wenn Sie Bulk-Aktionen zum Verarbeiten von Zeilen verwenden möchten, müssen Sie auch eine Implementierung für column_cb () bereitstellen, bei der es sich um einen speziellen Fall einer spaltenspezifischen Methode handelt.

Dieses Kontrollkästchen ist für alle Zeilen in meiner Tabelle angegeben. Der Wert des Kontrollkästchenfelds muss eindeutig sein wie user_login oder id, damit Sie die Datensätze eindeutig identifizieren können.

Ich habe dann Unterstützung für Sortierung und Paginierung in der Tabelle hinzugefügt.

Sortierung mit WP_List_Table :: get_sortable_columns ()

Überschreiben get_sortable_columns () werden bestimmte Spalten in der Tabellenliste sortieren. Der Code für die tatsächliche Sortierung von Daten muss jedoch in prepare_items () geschrieben werden. In meinem Beispiel habe ich in SQL selbst geortet, während ich Daten in fetch_table_data () wie oben gezeigt abgerufen habe.

[_ [_ $ _ GET ['order'] Wenn dies in der Spalte geschieht, ist die Referenz über supergloabls verfügbar.

 wp-list-table-sortable-columns "width =" 600 = height 222
Definiert sortierbare Spalten in Tabellen

Paginierung mit WP_List_Table :: set_pagination_args ()

Die Bildschirmoption, die ich hinzugefügt habe, hat bereits ein Steuerelement, um die Daten in der Tabelle zu begrenzen. Um es mit einer Tabelle zu verknüpfen, verwende ich get_items_per_page () und set_pagination_args () um das Paginierungsargument in prepare_items ()

festzulegen.

Um eine Untermenge von Daten für jede Tabellenseite zu erstellen, verwende ich array_slice () auf dem Array meiner Ergebnisse, bevor ich es rendere.

 wp-list-table-pagination "width =" 600 [height="546
Die Paginiertabelle wurde hinzugefügt
Als Nächstes habe ich meiner Listentabelle Suchfelder, Sammelaktionen und Aktionszeilen hinzugefügt.

WP_List_Table :: search_box ()

Um ein Suchfeld hinzuzufügen, müssen Sie es zusammen mit einem versteckten Feld in ein Formular einbinden, um sicherzustellen, dass es an die Plugin-Seite gesendet wird. Ich habe das in partials-wp-list-tabelle-demo-display.php kurz vor dem display () hinzugefügt. Die Handhabung der Daten für die Suche erfolgt in prepare_items () .

Wenn die Suche abgeschlossen ist, wird der Suchschlüssel über superglobal $ _REQUEST ['s'] verfügbar sein. In meinem Beispiel manipuliere ich das Array der Ergebnisse mithilfe von array_filter und der Suchschaltfläche.

WP_List_Table :: get_bulk_actions ()

Die Bulk-Aktion wird hinzugefügt, indem get_bulk_actions () überschrieben wird und Sie Aktionen in einem assoziativen Array angeben müssen. Die Handhabung der eigentlichen Aktion muss in prepare_items () erfolgen.

Beim Versenden einer Massenaktion werden zwei Variablen action und action2 gesetzt. Der Wert hängt von der Massenaktion ab, die Sie über oder unter der Tabelle anwenden.

In meinem Plugin [1999] handle_table_actions () Aufrufmethode in prepare_items () behandelt die Verarbeitung von Benutzeraktionen.

Nach dem Bestätigen der Nonce laden wir für die meisten Aktionen unter inc / admin / views / .

Schließlich habe ich einen Aktionslink zu einer Tabellenzeile hinzugefügt.

Hinzufügen von Zeilen-Aktionslinks zur Liste

Um eine Aktions-Link-Zeile hinzuzufügen, müssen Sie eine spaltenspezifische Implementierung für die Tabellenspalte bereitstellen, die einen Aktionslink anzeigen soll. In meinem Plugin habe ich zwei Aktionslinks hinzugefügt – Meta und Meta zur Spalte user_login hinzufügen.

Wenn eine Zeilenaktion ausgeführt wird, werden in meinem Beispiel die Benutzer-ID, die benutzerdefinierte Nonce und die Aktion als Teil des URL-Parameters eingeschlossen. /users.php?page=nds-wp-list -table-demo & action = view_usermeta & user_id = 11 & _wpnonce = 9c38dd6c2c
Hiermit werden Benutzeraktionen in prepare_items . Ich handle eine Zeilenaktion mit der gleichen Methode handle_table_actions () als Massenaktion.

Sie können Aktionen identifizieren, die mit current_action () behandelt wurden, und die Benutzer entsprechend umleiten. Siehe unter inc / admin / views um zu sehen, wie ich Anfragen für Meta View-Aktionen verarbeite.

Das ist es! Hier ist die vollständige Liste Tabelle.

Benutzerdefinierte Benutzerliste Tabelle mit der Klasse WP_List_Table

Verpackung

hoffentlich ist dieser Artikel nützlich. Hier einige Beispiele für die WP_List_Table-Klasse, die in populären Plugins verwendet wird:

Vielen Dank für das Lesen, besuchen Sie den Originalartikel aus dieser Quelle Link.

Author: 

Related Posts

 

Leave a Reply