✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Fügen Sie dem Bildschirm „Alle Beiträge“ eine benutzerdefinierte Ansicht hinzu

6

TL;DR: Ich werde an einer Serie arbeiten, die untersucht, wie man eine nützliche Aufgabe mit Taxonomien, wahrscheinlich Kategorien, erreicht, und sie dann in ein objektorientiertes Plugin umgestaltet, das als nützliches Plugin für Taxonomien im Allgemeinen dient .


Eine kurze Geschichte der OOP-Posts

Vor einiger Zeit habe ich eine lange Serie über die Prinzipien der objektorientierten Programmierung gemacht (und versucht, eine anständige Menge darüber zu teilen, wie man bestimmte Dinge im Kontext von WordPress erreicht).

Ich habe im Laufe der Jahre auch eine Reihe von Artikeln über das gesamte Paradigma geschrieben, für diejenigen, die daran interessiert sind, einige dieser Artikel nachzuholen.

Und ich wäre nachlässig, wenn ich nicht mitteilen würde, dass ein guter Freund von mir auch buchstäblich ein Buch zu diesem Thema geschrieben hat.

Und so dachte ich, als ich über verschiedene Themen nachgedacht habe, über die ich schreiben könnte (nach einer zugegebenermaßen längeren Auszeit als geplant), dass es sich lohnen könnte, über praktische Dinge zu sprechen, die wir mit normalen APIs und Hooks machen können, und dann Umgestalten Sie das in eine Art Dienstprogramm-Plugin.

Fügen Sie eine benutzerdefinierte Ansicht hinzu

Für die Arbeit, die ich in dieser Demo teilen werde, verwende ich Folgendes:

Wenn Sie mitverfolgen möchten, was ich vorhabe, verwenden Sie alle oben genannten (ich weiß nicht, ob ich alles teilen werde, aber wenn Sie Screenshots und Codeschnipsel sehen, wissen Sie, woher es kommt ).

Damit hier ein kleiner Exkurs zu viewsWordPress (und das ist nicht wie Views im Sinne von MVC oder MVVM ).

WordPress-Ansichten

Zum Zeitpunkt des Schreibens dieses Artikels scheint es keine klare, prägnante Aussage darüber zu geben, was eine WordPress-Ansicht ist. In Bezug auf den verfügbaren Haken haben wir views_edit-post.

Wenn wir also diesen speziellen Haken nehmen und was er tut, würde vielleicht so etwas ausreichen:

Eine WordPress-Ansicht ist eine Seite, auf der wir alle Beiträge anzeigen können, die bestimmten Kriterien entsprechen.

Standardmäßig umfasst dieses Kriterium normalerweise Posts wie:

  • Veröffentlicht,
  • Entwürfe,
  • Müll,
  • Geplant,
  • Usw.

Aber was ist, wenn Sie einen anderen Beitrag mit anderen Kriterien haben, nach denen Sie filtern möchten? Sicher, Sie können nach dem Dropdown-Feld filtern, das auf dem Bildschirm vorhanden ist (z. B. nach Kategorie), und das ist in Ordnung, aber was ist, wenn Sie ein benutzerdefiniertes Kriterium für [einen bestimmten Grund] verwenden möchten?

Was ist zum Beispiel, wenn Sie nicht durch ein bestimmtes Element klicken, dann filtern und dann die Beiträge anzeigen möchten? Stattdessen möchten Sie einen Link zu den Kriterien sehen, die Anzahl der Beiträge, die den Kriterien entsprechen, und dann danach filtern?

Hier kommt die Möglichkeit zum Bearbeiten von Ansichten ins Spiel.

Und für die Zwecke dieses Posts werde ich behandeln, wie man oben auf der Seite einen neuen Anker einführt, der die Anzahl der Posts für eine bestimmte Kategorie auflistet.

Was ist unsere Ansicht?

In diesem Fall verwenden wir Nicht kategorisiert, da eine Standardinstallation bereits einen nicht kategorisierten Beitrag zur Verfügung hat und wir bestimmte Änderungen leicht anpassen können.

Dazu schreiben wir ein, mu-plugindamit es im mu-pluginsVerzeichnis abgelegt wird. Wenn Ihre Installation keines hat, fügen Sie das Verzeichnis hinzu und fügen Sie add-custom-view.phpdann dem Verzeichnis hinzu:

Fügen Sie dem Bildschirm „Alle Beiträge“ eine benutzerdefinierte Ansicht hinzu

Von dort aus könnte die anfängliche Plugin-Datei etwa so aussehen:

Fügen Sie dem Bildschirm „Alle Beiträge“ eine benutzerdefinierte Ansicht hinzu

Zunächst gehen wir wie folgt vor:

  1. Festlegen eines Namensraums,
  2. Hinzufügen eines Filters,
  3. Richten Sie dann die Funktion ein, die den Standardsatz von akzeptiert $viewsund das Array von zurückgibt, $viewsnachdem sie geändert wurden.

Was müssen wir also von hier aus tun?

Das Anforderungsprofil

Um das zu erreichen, was wir wollen, müssen wir in der Lage sein:

  • Geben Sie den Namen der Kategorie an,
  • Fügen Sie den Link zur Kategorie zusammen mit der Anzahl der Beiträge mit dieser Kategorie zur Liste der Aufrufe hinzu,
  • Die Möglichkeit festzustellen, ob wir uns auf der Kategorieseite befinden, um die Liste richtig zu gestalten
  • Die Möglichkeit, nach Beitragstyp zu filtern,
  • Und eine Möglichkeit, es zu testen.

Alle oben genannten Punkte werden später in diesem Artikel im Code behandelt, aber der fünfte Schritt erfordert, dass Sie manuell eine Kategorie erstellen, damit wir leicht testen können, ob der Rest des Codes funktioniert.

Also mach weiter und mach das. Die Kategorie kann beliebig benannt werden (ich habe Beispielkategorie verwendet). Wenn Sie fertig sind, schreiben wir Code aus dem Rest des Plugins.

Bestimmen Sie unsere Ansicht

Zuerst werde ich eine Funktion teilen, die bestimmt, auf welcher Seite wir uns befinden, und eines von zwei Dingen tun wird:

  • Wenn wir uns auf einer Seite befinden, die denselben Abfragezeichenfolgenparameter für die ID unserer Kategorie hat, gebe ich einen Klassennamen an; Andernfalls geben wir eine leere Zeichenfolge zurück.

Dazu sollte die Funktion:

  1. Akzeptieren Sie einen Kategorienamen,
  2. Initialisieren Sie eine Variable für Attribute,
  3. Vergleichen Sie die Variablen der Abfragezeichenfolge
  4. Bestimmen Sie, ob der Kategoriename und die Kategorie-ID identisch sind,
  5. Und geben Sie den richtigen Wert zurück, wenn nicht.

So sieht meine Funktion aus:

Fügen Sie dem Bildschirm „Alle Beiträge“ eine benutzerdefinierte Ansicht hinzu

Dies könnte auch mit einem ternären Operator vereinfacht werden, aber um es so lesbar wie möglich zu halten, lasse ich es vorerst so, wie es ist.

Bestimmen Sie den Kategorienamen

Diese spezielle Funktion ist eigentlich sehr einfach, und obwohl wir es gewohnt sind, bei vielen Dingen, die wir tun, Eingaben von Benutzern entgegenzunehmen, werden wir diesen Wert fest codieren.

Dazu speichern wir dies einfach in einer Variablen, die durch den Rest des Codes weitergegeben wird.

Fügen Sie dem Bildschirm „Alle Beiträge“ eine benutzerdefinierte Ansicht hinzu

Sie haben gesehen, dass die Variable zuvor an die obige Funktion übergeben wurde, und werden diese auch in der endgültigen Version des Quellcodes verwenden.

Ergebnisse von Beiträgen mit der Kategorie abrufen

Dazu müssen wir zwei Dinge tun:

  1. Rufen Sie alle object_idDatensätze ab, die die ID dieser Kategorie haben,
  2. Filtern Sie die Inhalte heraus, die nicht für diese Beiträge bestimmt sind.

Es gibt ein paar Dinge, die ich hier erwähnen möchte: Erstens werden wir die get_cat_IDFunktion verwenden, die WordPress bereitstellt. Dadurch wird die ID der Kategorie basierend auf dem eingehenden Namen abgerufen.

Zweitens verwende ich zwei Funktionen – von denen eine eine Schleife ist – um den Post-Status eines Elements zu untersuchen. Dies ist nicht der effizienteste Weg, dies zu tun. Stattdessen könnten wir eine elegantere Abfrage verwenden, um nur Posts abzurufen; Die erste Iteration davon soll jedoch zeigen, wie man dies nicht nur von Grund auf tut, sondern auch für ein Publikum, das mit anderen Aspekten des Schreibens von Code möglicherweise nicht so vertraut ist.

So erhalten wir alle Datensätze in WordPress, die als nicht kategorisiert gekennzeichnet sind.

Fügen Sie dem Bildschirm „Alle Beiträge“ eine benutzerdefinierte Ansicht hinzu

Und damit nehmen wir die Ergebnisse und senden sie an diese Funktion, die die Anzahl der Elemente zurückgibt, die nur Posts sind.

Fügen Sie dem Bildschirm „Alle Beiträge“ eine benutzerdefinierte Ansicht hinzu

Damit haben wir das meiste, was wir brauchen, um mit der Zusammenstellung unseres Ansichtsankers zu beginnen.

Generieren Sie einen View-Anker

Jetzt, da wir alle Funktionen haben, die zum Generieren eines Ansichtsankers erforderlich sind, müssen wir sie anstelle von sprintffür eine sichere Zeichenfolgenformatierung zusammenfügen.

Das Ziel ist es, einen Anker zu generieren, der:

  • Sieht aus wie der Rest der Anker,
  • Zeigt die Anzahl der Beiträge,
  • Ist fett, wenn Sie besagte Beiträge ansehen.

Dazu müssen wir den Link erstellen und die richtigen Argumente für die Abfragezeichenfolge hinzufügen. Das heißt, wir richten einen Link zu edit.phpmit Argumenten ein für:

  • die ID der Kategorie,
  • die Beitragsart des Beitrags,
  • und alle Beiträge, die diese Kategorie haben.

Als nächstes müssen wir Folgendes einbeziehen:

  • alle Attribute, um den Link zu gestalten,
  • der Name der Kategorie,
  • und nur der Inhalt des Beitrags post_type.

Dazu können wir die folgende Funktion verwenden:

Fügen Sie dem Bildschirm „Alle Beiträge“ eine benutzerdefinierte Ansicht hinzu

Dies bewirkt mehrere Dinge:

  1. Akzeptiert das Standard-Array $viewsvon WordPress,
  2. Fügt unseren benutzerdefinierten Anker wie oben beschrieben hinzu,
  3. Schiebt es in das $viewsArray,
  4. Gibt es zum Rendern an WordPress zurück.

Und das ist es!

Testen

Um dies zu testen, laden Sie Ihren Browser und Sie sollten einen neuen Link „Nicht kategorisiert” neben den restlichen Ankern wie „Alle”, „Veröffentlicht”, „Mine”, „Papierkorb”, „Geplant” usw. sehen.

Ändern Sie danach eine Beitragskategorie und entfernen Sie Nicht kategorisiert, besuchen oder aktualisieren Sie dann die Seite Alle Beiträge erneut und Sie werden sehen, dass der Link aktiv und gestaltet ist, je nachdem, wie Sie ihn anzeigen, und er enthält die Anzahl der kategorisierten Beiträge auch so.

Nun zu GitHub

Ich habe die erste Iteration dieses Plugins auf GitHub geladen, damit Sie es herunterladen und mu-pluginszum Testen in Ihr Verzeichnis legen können.

In den kommenden Beiträgen möchte ich damit beginnen, dies in ein objektorientiertes Paradigma zu ändern, also sind dies die Änderungen, die am Plugin und den Inhalten kommen, die in zukünftigen Beiträgen kommen.

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen