Im ersten Beitrag dieser Serie gab ich einen Überblick über die verschiedenen Arten von Metadaten, die von WordPress angeboten werden, wo sie aufbewahrt werden und was wir in dieser Serie behandeln werden.
Außerdem habe ich definiert, was Metadaten sind. seine Rolle in WordPress und wie es für uns als Entwickler relevant ist. Aber die Einführung sollte genau das sein: ein Überblick über das, was wir im Rest dieser Serie behandeln werden.
In diesem Beitrag beginnen wir mit der Erkundung der WordPress Post Meta API, um herauszufinden, warum es nützlich ist, was wir damit machen können und wie die von der WordPress-Anwendung angebotenen Methoden genutzt werden können.
Erstens, wenn Sie ein fortgeschrittener Entwickler sind, ist es unwahrscheinlich, dass diese Serie von Tutorials Ihnen sehr helfen wird. Es ist eher für diejenigen gedacht, die ein wenig mit Themen gearbeitet haben, vielleicht den Plugin-Code angepasst haben und bereit sind, einen Schritt weiter zu gehen, indem sie den Beiträgen (oder den Beitragstypen), aus denen ihr Projekt besteht, zusätzliche Informationen hinzufügen.
Beachten Sie zweitens, dass die Codebeispiele in diesem Lernprogramm sind nichtzur Verwendung in einer Produktionsumgebung. Stattdessen soll der Code, den wir uns ansehen werden, nicht überall dort verwendet werden, wo jedermann öffentlichen Zugriff auf die Website hat.
Im Moment plane ich, fortgeschrittenere Techniken für dieses Thema zu behandeln, nachdem wir uns durch diese Serie gearbeitet haben. Im Moment beschäftigen wir uns nur mit der Arbeit mit der API.
Warum allerdings? Was ist die Verzögerung bei der Erfassung zusätzlicher Informationen? Einfach gesagt, hat es mit der Website-Sicherheit zu tun. Insbesondere wenn wir Informationen in die Datenbank schreiben, müssen wir davon ausgehen, dass die Daten nicht in einem Format vorliegen, das für uns sicher ist. Wir müssen die Daten desinfizieren.
Es gibt eine völlig andere Gruppe von APIs zum Bereinigen von Daten, die wir erforschen müssen, die in Verbindung mit den Metadaten-APIs funktionieren. Dies ist jedoch nicht das Lernprogramm, um dies zu tun.
Ich weiß, es mag ein wenig frustrierend sein, über diese APIs zu sprechen, ohne sie nutzen zu können. Denken Sie jedoch daran, dass dies eine Einführung in die API sein soll. Die Lernprogramme sollten ausreichend Informationen enthalten, damit Sie mit den Metadaten auf Ihrem Computer arbeiten können. Sie sollten jedoch auch so viele Fragen hinterlassen, dass wir in einer zukünftigen Artikelserie tiefer in das Thema eintauchen können.
Lassen Sie uns mit dem WordPress Post Meta API beginnen. Und sei gewarnt: Dies ist ein langes Tutorial.
Bevor wir uns den Code ansehen, müssen Sie sicherstellen, dass Sie über die notwendigen Tools zum Durchsuchen der Datenbank verfügen, in der Ihre WordPress-Installation ausgeführt wird. Zu den verfügbaren Tools gehören:
Aber nutzen Sie das, was Sie am liebsten mögen. Solange Sie die Daten in der Datenbank anzeigen können, können Sie loslegen.
Lassen Sie uns als Nächstes verstehen, wie WordPress Post-Metadaten definiert. Gemäß dem Kodex:
WordPress bietet Postautoren die Möglichkeit, einem Beitrag benutzerdefinierte Felder zuzuweisen. Diese willkürlichen Zusatzinformationen werden als Metadaten bezeichnet.
Metadaten werden mit Schlüssel / Wert-Paaren behandelt. Der Schlüssel ist der Name des Metadatenelements. Der Wert ist die Information, die in der Metadatenliste in jedem einzelnen Beitrag angezeigt wird, dem die Informationen zugeordnet sind.
Einfacher ausgedrückt, WordPress ermöglicht es uns, benutzerdefinierte Informationen in die Datenbank zu schreiben, sie mit jedem gewünschten Posting zu verknüpfen und sie bei Bedarf abzurufen. Ferner werden die Informationen unter Verwendung eindeutiger Schlüssel / Wert-Paare gespeichert.
Wenn Ihnen das fremd erscheint, machen Sie sich keine Sorgen. Die Idee ist, dass jeder Wert, den Sie speichern, mit einem eindeutigen Schlüssel zusammenhängt (ähnlich wie ein Türknauf einen eindeutigen Schlüssel zum Entsperren hat)..
Der Schlüssel ist, wie wir den Wert aus dem Beitrag abrufen können. Dies wirft jedoch eine Frage auf: Was passiert, wenn einem Beitrag mehrere Metadaten zugeordnet sind? Das heißt, wenn ein bestimmter Beitrag mehrere Metadaten enthalten kann, wie können wir eindeutige Metadaten abrufen?
Wie wir sehen werden, wenn wir uns einige der folgenden Beispielcodes ansehen, müssen wir nicht nur den beim Speichern von Daten verwendeten Schlüssel verwenden, sondern auch die eindeutige ID des Beitrags an die Funktion übergeben.
Nichts funktioniert jedoch besser, als es in Aktion zu sehen. Angenommen, Sie haben WordPress auf Ihrem lokalen Computer eingerichtet und können mit der Bearbeitung zufrieden sein Functions.php
Beginnen wir im Kern Ihres Standarddesigns.
Ich verwende folgende Tools:
Das Wichtigste ist, dass Sie sowohl WordPress als auch das oben erwähnte Thema ausführen.
Wenn Sie mit einer anderen IDE und einem Datenbank-Front-End zufrieden sind, ist das völlig in Ordnung.
Wir haben in der Einführung dieses Artikels viele Informationen behandelt, aber es wird sich als nützlich erweisen, wenn wir nicht nur die Post-Meta-API, sondern auch die anderen APIs betrachten. Behalte diesen Verstand also. Ich werde mich in zukünftigen Artikeln auch auf diesen Artikel beziehen.
Lassen Sie uns in die API eintauchen.
Die Art, wie wir den Code integrieren werden, ist nicht die professionelle Art, Änderungen an Ihrem Design vorzunehmen, diese Funktionalität zu implementieren oder mit einer API zu kommunizieren. Wir machen dies für die ersten Schritte eines Anfängers in die WordPress-Entwicklung.
In einer Folgeserie nehmen wir die Arbeit, die wir in dieser Serie geleistet haben, in ein wartungsfähigeres Plugin auf, das auch einen größeren Fokus auf Wartbarkeit, Sicherheit und mehr enthält.
Im Moment konzentrieren wir uns auf die Grundlagen der API.
Denken Sie daran, dass ich eine grundlegende Installation von WordPress zusammen mit dem zwanzig-sechzehn-Thema für die Demos verwende, die wir in diesem Tutorial und den restlichen Tutorials der Serie sehen werden.
Zweitens werden wir Änderungen vornehmen Functions.php
. Dies ist normalerweise nicht der beste Ort, um diese Änderung vorzunehmen. Stellen Sie jedoch sicher, dass Sie den obigen Hinweis gelesen haben, bevor Sie fortfahren.
Lassen Sie uns davon ausgehen, dass Ihr Server ausgeführt wird, Ihre IDE bereit und bereit ist Functions.php
in Ihrem Editor Obwohl Ihr Screenshot etwas anders aussehen kann, sollte er diesem ähneln:
Die Herausforderung bei der Arbeit mit Functions.php
Es ist bereits so viel Code vorhanden, dass das vorhandene Thema unterstützt. Obwohl wir unseren Code letztendlich in ein Plugin in einer zukünftigen Serie verschieben, sollten wir zumindest den ersten Schritt beim Erstellen unserer Datei machen, damit wir unseren Code selbst einschließen können.
Verwenden Sie Ihre IDE Ihrer Wahl:
tutsplus-metadata.php
.Wenn Sie fertig sind, sollten Sie so etwas in Ihrem Dateisystem haben:
Schließlich müssen wir sicherstellen, dass wir dies in einbeziehen Functions.php
. Fügen Sie dazu die folgende Codezeile direkt unter dem sich öffnenden PHP-Tag hinzu.
Laden Sie Ihren Browser neu. Wenn alles gut geht, sollten Sie das Design genau so sehen, wie es war, bevor Sie Ihre Datei hinzufügen
Functions.php
.Jetzt machen wir uns an die Arbeit.
Fertig machen
Wir erinnern uns an unsere vorherige Diskussion, dass wir drei Dinge benötigen, um Metadaten zur Datenbank hinzuzufügen:
- eine Beitrags-ID
- ein eindeutiger Schlüssel, mit dem wir die Metadaten identifizieren können
- einen Wert, mit dem wir speichern möchten, den wir später abrufen möchten
In diesem Tutorial müssen wir nur Metadaten hinzufügen, die standardmäßig angezeigt werden Hallo Welt! Beitrag, der standardmäßig in jeder Installation von WordPress enthalten ist.
Angenommen, wir möchten einige Metadaten hinzufügen, die unseren Namen enthalten. Wir verwenden also den Metaschlüssel
mein Name
und den Wert, den wir verwenden, ist, wie auch immer Ihr Name lautet. In meinem Fall ist es "Tom McFarlin".Als Erstes wollen wir eine Funktion definieren, in die Sie einsteigen
der Inhalt
. Dadurch können wir unseren Text ausgeben, wenn die Funktion ausgeführt wird. Wenn Sie nicht mit Haken vertraut sind, lesen Sie bitte diese Serie.Ihr ursprünglicher Code sollte so aussehen:
Wenn Sie diesen Code ausführen, sollte die Zeichenfolge "[We are here.]" Vor dem Inhalt des Beitrags vor allem anderen angezeigt werden passiert nur auf der Hallo Welt! Post. Dies liegt daran, dass wir prüfen, ob die ID vor uns 1 ist
Echo
die Saite.Beachten Sie, dass die endgültige Version des am Ende dieses Beitrags freigegebenen Codes mit Kommentaren versehen wird. Bis dahin werde ich erklären, was der Code tut, wenn wir jeden neuen Code in unseren Code einfügen.
Metadaten hinzufügen
Jetzt fügen wir einige Metadaten hinzu. Fügen Sie dazu diesen Code in den Rumpf der Bedingung ein, sodass wir sicher sind, dass wir dies tun Hallo Welt. Da wir in der Bedingung bereits die ID von 1 überprüfen, können wir einfach den Code entfernen, den wir im vorherigen Abschnitt hinzugefügt haben, und ihn aktualisieren.
Innerhalb der Konditionalität rufen wir die an
add_post_meta
API-Funktion, die so aussieht:Es wäre schön, wenn wir mit diesen Informationen etwas anfangen könnten. Bevor wir das tun, gibt es jedoch noch ein paar weitere Informationen, die wir behandeln müssen. Näheres zum Aktualisieren von Metadaten (und dazu, wie sie sich vom Hinzufügen von Metadaten unterscheiden) sowie einige Nuancen, die Sie beim Umgang mit der API möglicherweise nicht erwarten.
Aktualisieren von Metadaten
Es gibt einen geringfügigen Unterschied zwischen dem Hinzufügen von Metadaten und dem Aktualisieren von Metadaten. Sie wissen, wie ein Schlüssel einen mit ihm verknüpften Wert eindeutig identifiziert? Nun, das ist teilweise genau.
Wenn du anrufst
add_post_meta
, Sie erstellen jedes Mal einen Eintrag, wenn Sie diesen Anruf tätigen. Wenn Sie also in unserem Code oben die Seite dreimal aktualisieren, wird Folgendes angezeigt:Neugierig, richtig? Erinnern Sie sich daran, was der Kodex sagt:
Wenn der angegebene Schlüssel bereits in benutzerdefinierten Feldern des angegebenen Beitrags vorhanden ist, wird ein anderes benutzerdefiniertes Feld mit demselben Schlüssel hinzugefügt, sofern das Argument $ unique nicht auf true festgelegt ist. In diesem Fall werden keine Änderungen vorgenommen.Ah, es gibt einen optionalen Parameter, den die Funktion akzeptiert. Es ist ein boolescher Name
$ einzigartig
, und es lässt uns passierenwahr
Wenn wir nur sicherstellen möchten, dass der hinzugefügte Wert einzigartig ist.Möglicherweise möchten Sie Ihre vorhandenen Datensätze an dieser Stelle löschen. Wenn nicht, ist das in Ordnung. Verwenden Sie einfach einen anderen Wert für die
mein Name
Schlüssel.Dies bedeutet, dass wir unseren Code folgendermaßen aktualisieren könnten:
Jetzt erstellen Sie nur einen einzelnen Eintrag. Wenn Sie außerdem versuchen, den Wert dieses Schlüssels im Code zu ändern, dann es würde nicht in der Datenbank überschrieben werden. Sobald die Post-Metadaten fertig geschrieben sind, werden sie wie beim ersten Mal gespeichert.
Aber es muss nicht so sein, und das ist auch der Fall
update_post_meta
kommt ins Spiel. Eigentlich,update_post_meta
könnte mehr als verwendet werdenadd_post_meta
, abhängig von Ihrem Anwendungsfall.Bevor Sie sich den Code ansehen, lesen Sie, was der Codex zu sagen hat:
Die Funktion update_post_meta () aktualisiert den Wert eines vorhandenen Metaschlüssels (benutzerdefiniertes Feld) für den angegebenen Beitrag.Dies kann anstelle der Funktion add_post_meta () verwendet werden. Die erste Funktion dieser Funktion ist, sicherzustellen, dass $ meta_key bereits auf $ post_id vorhanden ist. Wenn dies nicht der Fall ist, wird stattdessen add_post_meta ($ post_id, $ meta_key, $ meta_value) aufgerufen und das Ergebnis zurückgegeben.Hast du das verstanden? Es kann "anstelle von verwendet werden
add_post_meta
", was nützlich ist, weil dies bedeutet:
- Wenn die Post-Metadaten für einen bestimmten Schlüssel bereits vorhanden sind,
- Wenn du benutzt
update_post_meta
,- Sie überschreiben den vorherigen Wert.
An dieser Stelle möchten Sie möglicherweise die Informationen in Ihrer Datenbank löschen oder ein neues Schlüssel- und Wertepaar erstellen. Dies bedeutet, dass wir unseren Code folgendermaßen aktualisieren können:
Dies bringt jedoch einige inhärente Gefahren mit sich.
Wenn Sie nämlich einen Wert überschreiben, den Sie nie überschreiben wollten, ist dieser Wert nicht mehr verfügbar und kann nicht zurückgefordert werden (es sei denn, Sie tun schickere Arbeiten, die außerhalb des Bereichs dieser Serie liegen)..
Es gibt ein optionales abschließendes Argument für
update_post_meta
, aber, und das ist das$ prev_value
Streit. Sie können also angeben, welchen Wert Sie überschreiben möchten.Nehmen Sie zum Beispiel den Fall, dass Sie mehrere Datensätze mit demselben Schlüssel erstellt haben
add_post_meta
und Sie möchten nur einen dieser Datensätze aktualisieren. Um diese Daten zu aktualisieren, übergeben Sie den Wert, der diesem einen Datensatz entspricht.Was ist der Unterschied?
Der Unterschied zwischen
add_post_meta
undupdate_post_meta
kann als subtil betrachtet werden, hängt jedoch von Ihrem Anwendungsfall ab.Ich werde versuchen, sie so einfach wie möglich hier aufzuschlüsseln, denn obwohl es angesichts der Beispiele, die wir oben gesehen haben, kompliziert erscheinen mag, ist es einfacher, wenn Sie alles auslegen.
add_post_meta
ist nützlich, wenn Sie einen Datensatz in die Datenbank einfügen möchten. Wenn der Wert bereits vorhanden ist, kann der neue Wert geschrieben werden. Wenn du bestanden hast wahr
für die $ einzigartig
Parameter der Funktion, dann wird nur der erste Datensatz erstellt und nichts wird das überschreiben außer update_post_meta
.update_post_meta
kann anstelle von verwendet werden add_post_meta
und überschreibt immer den vorherigen Wert. Wenn Sie mit mehreren Datensätzen arbeiten, die von erstellt wurden add_post_meta
, Dann müssen Sie möglicherweise einen vorherigen Wert angeben, den Sie überschreiben möchten.Und das ist alles. Natürlich müssen wir die Datensätze immer noch aus der Datenbank abrufen und auf dem Bildschirm anzeigen.
Beim Abrufen von Post-Metadaten sind zwei wichtige Punkte zu beachten:
Manchmal hängt es davon ab, wie Sie die ursprünglichen Informationen gespeichert haben. Manchmal hängt es davon ab, wie Sie damit arbeiten wollen.
Bevor wir uns die verschiedenen Möglichkeiten zum Abrufen von Informationen ansehen, wollen wir uns zunächst den grundlegenden API-Aufruf ansehen. Konkret spreche ich darüber get_post_meta
. Wenn Sie bisher mitverfolgt haben, sollte das Verständnis der API relativ einfach sein.
Die Funktion akzeptiert drei Parameter:
Aus dem Kodex:
Post-Meta-Feld für einen Beitrag abrufen. Wird ein Array sein, wenn $ single falsch ist. Ist der Wert des Metadatenfelds, wenn $ single wahr ist.
Scheint leicht genug. Wenn sich also gerade das letzte Bit unseres Quellcodes befindet, können wir Informationen abrufen, indem Sie beispielsweise einen Anruf tätigen get_post_meta (get_the_ID (), 'mein_name'));
.
Der Code, wie er oben steht, gibt ein Array zurück.
Wenn Sie den Ausdruck "mehrere Werte" hören, kann es hilfreich sein, sich ein Array oder eine Art Datenerfassung in der verwendeten Programmiersprache vorzustellen.
Denken Sie in unseren Beispielen daran, wann wir denselben Schlüssel mehrmals mit gespeichert haben add_post_meta
. Zur Auffrischung sah die Datenbank so aus:
Wenn ich die Informationen anhand ihres Schlüssels abrufen würde, was würde ich zurückbekommen? Da ich nicht angegeben hatte, dass ich einen String haben wollte, würde ich ein Array mit allen Datensätzen erhalten. Dies würde es mir erlauben, durch jeden von ihnen zu iterieren.
Wenn ich dagegen true angeben wollte, um eine Zeichenfolge zurück zu bekommen, würde ich nur die erste Zeile erhalten, die mit erstellt wurde add_post_meta
.
Wenn Sie also mehrere Werte für einen bestimmten Schlüssel abrufen möchten, würde Ihr Code folgendermaßen aussehen:
Beachten Sie, dass ich verwende
var_dump
um zu sehen, welche Informationen von WordPress im Browser zurückgegeben werden; Ich bin jedoch eher ein Fan von Debugger, was wir in einem zukünftigen Beitrag besprechen werden.Einzelwerte
Nehmen wir an, Sie möchten einzelne Werte für einen Beitrag speichern. In diesem Fall benötigen Sie noch die Post-ID und den Metadatenschlüssel. Sie müssen jedoch auch angeben
wahr
als dritter Parameter zuget_post_meta
.Wie oben erwähnt, wenn Sie sich mit einer Situation befassen, in der mehrere Zeilen erstellt wurden
add_post_meta
, Dann erhalten Sie die erste erstellte Zeile zurück. Wenn Sie jedoch diese Funktion nebenan verwendenupdate_post_meta
Dann erhalten Sie einen String-Wert der gespeicherten Daten zurück.Da wir die erstere besprochen haben, aber die letztere noch nicht behandelt haben, sieht der Code folgendermaßen aus:
Und dann erhalten Sie den Wert, den Sie als Metawert gespeichert haben, wenn Sie die Funktion aufrufen. Dies ist ziemlich einfach im Vergleich zu einem Satz von Datensätzen und Arrays, die ähnliche Informationen enthalten können.
Metadaten löschen
Der letzte Teil der Arbeit mit Post-Metadaten hat alles damit zu tun, dass sie gelöscht werden können. Es ist einfach, aber es gibt nur ein paar Nuancen, die wir verstehen müssen, um sicherzustellen, dass wir dies effektiv tun.
Aber zunächst die Definition aus dem Kodex:
Diese Funktion löscht alle benutzerdefinierten Felder mit dem angegebenen Schlüssel oder Schlüssel und Wert aus dem angegebenen Beitrag.Kurz, süß und auf den Punkt. Die Funktion akzeptiert drei Argumente:
- die ID des Beitrags
- der Metaschlüssel
- der Metawert
Der Meta-Wert ist optional, er ist jedoch praktisch, wenn Sie mit gearbeitet haben
add_post_meta
und möchten einen der spezifischen Einträge löschen, die durch mehrere Aufrufe dieser Funktion erstellt wurden (wie wir an anderer Stelle in diesem Lernprogramm gesehen haben).Obwohl telefonieren nach
delete_post_meta
Ist eine Post-ID, der Meta-Schlüssel und der optionale Meta-Wert so einfach zu übergeben, gibt die Funktion einen booleschen Wert zurück, der angibt, ob die Daten entfernt wurden oder nicht.Beispielcode zum Löschen einiger Post-Metadaten, die wir bisher angesehen haben, könnte folgendermaßen aussehen:
Ihre Implementierung kann jedoch variieren. Wenn Sie mit mehreren Metadaten arbeiten und sicherstellen möchten, dass das Löschen erfolgreich war, können Sie den Code in eine Bedingung einschließen.
Ein letztes Beispiel für Code
Im Folgenden finden Sie ein langes, dokumentiertes Code-Snippet, das den Großteil dessen ausmachen soll, worüber wir in diesem Tutorial gesprochen haben. Beachten Sie, dass die Funktionen in hängen
der Inhalt
.Dies dient nur zu Demonstrationszwecken, so dass Sie beim Auslösen einer bestimmten Seite problemlos das Auslösen dieser Funktionen auslösen können.
In der Regel finden Sie Metadatenfunktionen, die mit anderen Hooks wie z. B. verknüpft sind
save_post
und ähnliche Vorgänge, aber dies ist ein Thema für fortgeschrittenere Arbeit. Vielleicht werden wir später in diesem Jahr in einer anderen Serie darüber berichten.Fazit
Jede einzelne der API-Funktionen ist im WordPress-Codex verfügbar. Wenn Sie also vor dem nächsten Artikel der Serie einen Schritt weitergehen und weitere Informationen lesen möchten, können Sie dies gerne tun.
Wie bereits erwähnt, ist dies eine Einführung in die WordPress Post Meta API. Durch die Informationen, die im Codex, in diesem Lernprogramm und im bereitgestellten Quellcode bereitgestellt werden, sollten Sie in der Lage sein, zusätzlichen Inhalt in die Datenbank zu schreiben, der sich auf jeden Ihrer Beiträge bezieht.
Denken Sie jedoch daran, dies ist zu Demonstrationszwecken gedacht, da wir mehr Informationen haben. Insbesondere müssen wir die Datenbereinigung und Datenvalidierung untersuchen. Obwohl wir zunächst weitere Themen behandeln müssen (z. B. Metadaten von Benutzern, Kommentar-Metadaten usw.), werden wir in Kürze mit fortgeschritteneren Themen fortfahren.
Letztendlich versuchen wir, eine Grundlage für zukünftige WordPress-Entwickler zu schaffen, um von dort aus weiterzuarbeiten und an Lösungen für andere, für ihre Agenturen oder sogar für ihre Projekte zu arbeiten.
Ich freue mich darauf, diese Serie fortzusetzen. Denken Sie daran, wenn Sie gerade erst anfangen, können Sie in meiner Serie erfahren, wie Sie mit WordPress anfangen können, das sich auf Themen konzentriert, die speziell für Anfänger von WordPress gedacht sind.
Wenn Sie nach anderen Dienstprogrammen suchen, die Sie dabei unterstützen, Ihre wachsenden Werkzeuge für WordPress aufzubauen oder um Code zu lernen und sich mit WordPress vertraut zu machen, sollten Sie nicht vergessen, was wir in Envato zur Verfügung haben Markt.
Denken Sie daran, Sie können alle meine Kurse und Tutorials auf meiner Profilseite abrufen und Sie können mir auf meinem Blog und / oder Twitter unter @tommcfarlin folgen, wo ich über verschiedene Softwareentwicklungspraktiken spreche und wie wir sie in WordPress einsetzen können.
Bitte zögern Sie nicht, Fragen oder Kommentare in den untenstehenden Feed zu schreiben, und ich werde versuchen, auf jeden von ihnen zu antworten.
Ressourcen