WordPress-Metadaten beherrschen Arrays verstehen und verwenden

Im ersten Teil dieser Serie haben wir behandelt, was WordPress-Metadaten sind, wie sie abgerufen werden können und welche Datentypen (wie Objekte oder Arrays) zurückgegeben werden können. Nun ist es an der Zeit, die verschiedenen Arten von Arrays kennenzulernen.

Wenn Sie ein Array manuell schreiben, wissen Sie, wie die Struktur jedes Index lautet. Beim Erstellen von Arrays durch Abfragen einer Datenbank müssen Sie jedoch einige Detektivarbeiten durchführen, um die Struktur der zurückgegebenen Daten und die Namen der Indizes zu ermitteln.

Array-Typen

Vor dem eigentlichen Sprung in die verschiedenen Arten von Arrays ist es wichtig zu wissen, dass ein PHP-Array eine Variable ist, die mehr als ein Datenelement enthält.

Assoziative versus indizierte Arrays

Das einfachste Beispiel für ein Array ist eine durch Kommas getrennte Liste von Werten innerhalb der Funktion Array (), so was:

 $ heros = Array ('Luke', 'Leia', 'Han');

PHP indiziert automatisch Arrays, die in durch Kommas getrennten Listen erstellt wurden, und ordnet jedem Element einen numerischen Index zu, bei null beginnen. Dies bedeutet, dass wir den Wert des zweiten Elements 'Leia' der $ Helden Array durch Angabe des Index 1.

So würde das aussehen:

 $ heroes = array ('Luke', 'Leia', 'Han'); Echo $ Helden [1];

Ein praktisches WordPress-Beispiel finden Sie in der Funktion wp_get_attachment_image_src (), die ein indiziertes Array mit Informationen zu einem Bild zurückgibt.

Die URL, die Breite und die Höhe eines Bildes können mithilfe der numerischen Indizes aus dem von dieser Funktion zurückgegebenen Array abgerufen werden (beachten Sie, dass die an die Funktion übergebene '7' auf die Anhangs-ID verweist. In diesem Fall ist sie für die Zwecke beliebig unser Beispiel):

 $ img = wp_get_attachment_image_src (7); Echo '";

Das Verfolgen der Indexnummern in Arrays kann natürlich verwirrend sein, weshalb PHP es uns ermöglicht, assoziative Arrays zu erstellen. Rückkehr zu unserem $ Helden Zum Beispiel könnten wir jedem Element in unserem Array einen Namen geben:

 $ heroes = array ('unlikely_hero' => 'Luke', 'badass_princess' => 'Leia', 'lovable_rouge' => 'Han',);

Wir nennen diese Namen Schlüssel. In diesem Array würden wir sagen, dass der Schlüssel 'unwahrscheinlich_hero' den Wert 'Luke' hat. Wir können den Wert dieses Schlüssels abrufen, indem Sie ihn in Klammern neben die Variable setzen. Zum Beispiel:

 echo $ hereos ['unwahrscheinlich_held'];

Mehrdimensionale Arrays

Bisher haben wir Arrays betrachtet, bei denen es sich im Wesentlichen um eine Liste von Elementen handelt. Arrays können jedoch auch aus anderen Arrays bestehen. Wir nennen diese mehrdimensionalen Arrays. Beim Erstellen eines mehrdimensionalen Arrays haben wir im Wesentlichen eine Liste von Listen, in denen jeder Index oder Schlüssel in unserem Array von einem anderen Array definiert wird.

Zum Beispiel:

 $ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'Unwahrscheinlich Held'), 'Leia' => array ('full_name' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Princess',), 'Han' => array ('full_name' => 'Han Solo', ' home_planet '=>' Corell ',' trope '=>' Lovable Rouge ',),);

Diese Art von Array ist sehr nützlich, da wir es durchlaufen können, indem wir unser Markup einmal schreiben und PHP so oft wie möglich darüber iterieren lassen.

Werkzeuge für die Detektivarbeit

Wie ich zu Beginn dieses Artikels bereits sagte, kann das Arbeiten mit Metadaten oft Detektivarbeit erfordern, um die Struktur des Arrays zu ermitteln. Wie bei jedem Detektiv müssen Sie sicherstellen, dass Sie über die richtigen Werkzeuge für die Arbeit verfügen.

Amateurentwickler modifizieren ihre Themendateien, um vorübergehend Werte von Arrays auszugeben. Wenn Sie jedoch schnell und effizient arbeiten möchten, tun Sie dies auf die Pro-Weise - mit der Debug-Konsole.

Amateurentwickler modifizieren ihre Themendateien, um vorübergehend Werte von Arrays auszugeben. Wenn Sie jedoch schnell und effizient arbeiten möchten, tun Sie dies auf die Pro-Weise - mit der Debug-Konsole.

Was ist die Debug-Konsole??

Debug Console ist eines von mehreren Add-Ons für das Debug Bar-Plugin, das kein WordPress-Entwickler enthalten sollte. Wenn Sie in Ihrer Entwicklungsumgebung noch keine Debug-Leiste installiert haben, müssen Sie dies so schnell wie möglich tun.

Wenn Sie diese beiden Plugins installiert haben, können Sie über die Verwaltungsleiste auf eine Konsole zugreifen, auf der Sie PHP-Code ausführen können. Anstatt eine Design-Datei zu ändern, zu speichern und zu aktualisieren, können Sie einfach mit Code direkt im Browser experimentieren.

Klicken Sie einfach auf "Ausführen" und sehen Sie die Ergebnisse am unteren Bildschirmrand. Das Beste daran ist, dass alle Fehler, die Sie generieren, im Ergebnisfeld angezeigt werden, nicht im Frontend Ihrer Websites. Schwerwiegende Fehler beeinträchtigen die Debug-Konsole und nicht Ihre Site.

Ich habe gerade erst die Oberfläche von Debug Bar gekratzt. Das Developer Plugin enthält außerdem Debug Bar und Debug Console sowie eine Vielzahl weiterer cooler Dienstprogramme, die ich sehr empfehlen kann. Wenn Sie lernen, mit Metadaten zu arbeiten, werden Sie möglicherweise auch das Plugin Debug Bar Post Meta als sehr nützlich empfinden.

var_dump vs print_r

Nun haben Sie einen Ort, an dem Sie testen können, wie Sie das Innere eines Arrays erkunden können. Für diese Arbeit gibt uns PHP zwei Utility-Funktionen, die wir niemals für die Erstellung von Front-End-Ausgaben verwenden würden, aber perfekt für diagnostische Arbeiten sind-var_dump () und print_r ().

Beide Funktionen nehmen eine Variable mit einem Array als Eingabe und geben deren Inhalt aus, damit wir sie untersuchen können. var_dump () enthält weitere Informationen wie den Datentyp (String, Boolean, Integer usw.) und die Länge der Daten print_r () ist besser lesbar und überspringt diese zusätzlichen Informationen.

Verwenden von var_dump zum Suchen eines Index oder Schlüssels

Hier ist ein Screenshot eines var_dump der Metadaten für einen Beitrag. Es zeigt, wie ich mich auf ein Feld beschränkte. Mein Ziel war es, den Wert des Metatitelfelds zu ermitteln, das vom Plugin WordPress SEO by Yoast erstellt wurde.

Wie man am var_dump sehen kann, habe ich aus allen Meta-Feldern für Post ID # 1 mit generiert get_post_meta (1); Ich arbeitete mit einem assoziativen, mehrdimensionalen Array, das ein indiziertes Array mit nur einem Index enthielt. Bei der Untersuchung von var_dump fand ich heraus, dass der Schlüssel, den ich brauchte, "_yoast_wpseo_title" war und dass die eigentliche Information, die ich brauchte, im ersten Index lag. Um darauf zuzugreifen, habe ich den Schlüssel '_yoast_wpseo_title' in seine eigene Variable eingefügt und dann den ersten Index wie folgt abgespielt:

 $ meta = get_post_meta (1); $ seo_title = $ meta ['_ yoast_wpseo_title']; Echo '
SEO TITEL: '. $ seo_title [0]. '
';

Dies ist ein gutes Beispiel für die Veranschaulichung der Strategie, um den erforderlichen Schlüssel zu finden. Dies ist jedoch nicht der effizienteste Weg, um Informationen zu erhalten, sobald Sie den Schlüssel kennen. Nachdem ich die Detektivarbeit durchgeführt hatte, um den richtigen Schlüssel zu finden, würde ich den Schlüssel direkt im Anruf an angeben get_post_meta (). Wenn wir nur einen Schlüssel benötigen, können Sie ihn direkt im zweiten Argument von angeben get_post_meta ().

Es ist wichtig, daran zu denken get_post_meta (1, '_yoast_wpseo_title'); gibt nicht den von uns benötigten Wert zurück, sondern ein Array. Durch das Hinzufügen von "true" für das dritte Argument "single" können wir nur den ersten Index ermitteln, den wir benötigen.

Um den SEO-Titel direkt zu wiederholen, müssten wir in einer Zeile Folgendes tun:

 get_post_meta (1, '_yoast_wpseo_title', true);

Get_user_meta () verwenden

Ich habe Ihnen in dieser Serie bisher gezeigt, wie Sie mit der wp_postmeta Tabelle, die alle benutzerdefinierten Felder enthält, die einem Beitragstyp hinzugefügt werden.

Benutzer können auch benutzerdefinierte Felder haben. Benutzermetadaten, zusätzliche Felder, die zu Benutzerprofilen hinzugefügt werden, funktionieren ähnlich wie Post-Metadaten, werden jedoch in der Datenbank gespeichert wp_usermeta Tabelle. Beim Arbeiten mit Benutzer-Metadaten anstelle von get_post_meta (), wir gebrauchen get_user_meta ().

Diese beiden Funktionen arbeiten identisch, sie beziehen ihre Daten lediglich aus zwei verschiedenen Tabellen in der Datenbank.

Hier ist ein Beispiel mit get_user_meta () So geben Sie ein benutzerdefiniertes Bild als Link zu den Beiträgen eines Autors aus:

 $ Benutzer = Array (55, 89, 144, 233, 377); foreach ($ Benutzer als $ Benutzer) $ link = get_author_posts_url ($ user); $ img = get_user_meta ($ user, 'link_img';; echo ')';  // foreacheschleife beenden

Als nächstes…

In den beiden Teilen dieser Serie haben wir die verschiedenen Arten von Metadaten untersucht, wie sie gespeichert werden und wie wir sie abrufen können. Außerdem haben wir die zwei Arten von Arrays, die PHP anbietet, und wie diese mit Metadaten in Verbindung mit Posts und Benutzern korrespondieren, untersucht.

Im nächsten Teil der Serie werden wir uns genauer ansehen, wie wir jeden Datentyp durchlaufen können, damit wir die Leistung und Flexibilität haben, um die Ausgabe für unsere Vorlagen anzupassen.