In Teil 1, Teil 2 und Teil 3 unserer Tutorialserie zu benutzerdefinierten Meta-Box-Vorlagen haben wir gelernt, wie man eine wiederverwendbare Meta-Box erstellt, die alle Elemente aus einem leicht lesbaren und leicht zu kopierenden Array von Feldinformationen erhält . Viele der Daten sind einfach zu verwenden und geben lediglich Metafelder in Vorlagen oder über Funktionen wieder. Einige Felder sind jedoch komplexer und erfordern mehr Geschick für die korrekte Verwendung. Dieses Tutorial vermittelt Ihnen einen grundlegenden Überblick über die Verwendung dieser Daten und kann auf unzählige Arten vertieft werden.
WordPress bietet mehrere Möglichkeiten, Post-Metadaten abzurufen.
Der einfachste Weg, Daten anzuzeigen, ist die Verwendung der Wiederverwendbare benutzerdefinierte Metabox mit Daten Teil 4()
-Funktion. Sie könnten dies direkt in Ihre single.php-Vorlage einfügen, aber es wird Ihnen wahrscheinlich nicht die gewünschten Ergebnisse liefern. Es handelt sich um eine sehr wörtliche Ausgabe der Daten in einer ungeordneten Liste, der der Schlüssel jedes Felds vorangestellt ist, wie gezeigt.
Die häufigste Methode zum Speichern von Daten in einem Post-Meta-Feld ist die Verwendung der Funktion get_post_meta()
. Dies ist eine einfache Möglichkeit, ein bestimmtes Feld zu finden und es in einer Variablen zu speichern, die später verwendet werden kann.
$custom_text = get_post_meta($post->ID, 'custom_text', true);
Wenn Sie diesen Code in einer einzelnen Post-Schleife verwenden, wird der Text „etwas Text aus der Basistexteingabe“ in eine Variable eingefügt $custom_text
, die dann wiedergegeben oder gefiltert werden kann oder was auch immer Sie mit der Zeichenfolge tun möchten. Dies mag der richtige Ansatz sein, wenn Sie nur wenige Felder bearbeiten, in unserem Beispiel haben wir es jedoch mit 11 verschiedenen Feldern zu tun. Wenn Sie sie mit dieser Funktion einzeln aufrufen, wird Ihr Code unnötig aufgebläht, da es eine Möglichkeit gibt, alle Daten auf einmal abzurufen.
Meine Lieblingsmethode, wenn ich mit so vielen Feldern zu tun habe, ist die Verwendung der get_post_custom()
-Funktion. Mit dieser Funktion können wir alle benutzerdefinierten Post-Metafelder in einem Array speichern und dann die gewünschten Daten mithilfe der Array-Schlüssel abrufen.
$post_meta_data = get_post_custom($post->ID);
wird uns ein Array wie dieses geben:
Array ( [custom_text] => Array ( [0] => Some text in a basic text input ) [custom_textarea] => Array ( [0] => A paragraph or two from a textarea. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tristique quam mi. Sed eget ligula sit amet ante dapibus tristique. Mauris vel enim mauris, vitae mattis tortor. Praesent at adipiscing massa. Fusce quis eros vel sem pharetra consequat imperdiet ut est. ) [custom_checkbox] => Array ( [0] => on ) [custom_select] => Array ( [0] => one ) [custom_radio] => Array ( [0] => two ) [custom_checkbox_group] => Array ( [0] => a:2:{i:0;s:3:"one";i:1;s:5:"three";} ) [custom_post_id] => Array ( [0] => 109 ) [custom_date] => Array ( [0] => 05/25/2012 ) [custom_slider] => Array ( [0] => 15 ) [custom_image] => Array ( [0] => 413 ) [custom_repeatable] => Array ( [0] => a:3:{i:0;s:22:"text from a repeatable";i:1;s:27:"more text from a repeatable";i:2;s:33:"repeatable text fields are great!";} ) )
Wie Sie diesem Array entnehmen können, speichert WordPress jedes Feld als Array, da es für dasselbe Feld mehrere Werte geben kann. Möglicherweise stellen Sie auch fest, dass einige Felder serialisiert sind. Schauen wir uns genauer an, wie die Daten der einzelnen Felder verarbeitet werden, und diskutieren wir, wie dieses Problem gelöst werden kann.
Das Arbeiten mit Text- und Textfeldfeldern ist sehr einfach. Sie können darauf mit einem der folgenden Beispiele antworten:
echo $post_meta_data['custom_text'][0]; echo apply_filters('the_content', $post_meta_data['custom_textarea'][0]); $custom_checkox = $post_meta_data['custom_checkbox'][0]; if ($custom_checkbox == 'on') { do_stuff(); }
In der ersten Zeile wird die Zeichenfolge einfach unverändert ausgegeben, in der zweiten Zeile wird der the_content
-Filter von WordPress verwendet, um Zeilenumbrüche in Absätze umzuwandeln. Sie können dieselben Methoden auch mit Auswahl-, Options-, Datums- und Schiebereglerfeldern verwenden.
Die letzte Zeile zeigt, wie man testet, ob das Kontrollkästchen aktiviert ist. Wenn ja, können Sie verschiedene Funktionen oder eine beliebige Anzahl von Dingen ausführen.
Unsere Kontrollkästchengruppenfelder und wiederholbaren Felder werden in serialisierten Arrays in der Datenbank gespeichert. Bevor wir diese Daten ausgeben, müssen wir sie deserialisieren.
$custom_checkbox_group = unserialize($post_meta_data['custom_checkbox_group'][0]); $custom_repeatable = unserialize($post_meta_data['custom_repeatable'][0]);
unserialize()
ist eine grundlegende PHP-Funktion, die unsere Daten in ein Array umwandelt, das einfacher zu verwenden ist. Der obige Code gibt mir zwei Arrays, die so aussehen:
Array ( [0] => one [1] => three ) Array ( [0] => text from a repeatable [1] => more text from a repeatable [2] => repeatable text fields are great! )
Jetzt kann ich die Arrays durchlaufen, möchte sie aber in der Ausgabe verwenden. Zu beachten ist, dass in einem wiederholbaren Feld, wenn Sie es auch sortierbar machen, wie im Beispiel in Teil 3 des Tutorials zu benutzerdefinierten Meta-Box-Vorlagen, die Schlüssel im Array automatisch in der Reihenfolge 0, 1, 2, 3 usw. vorliegen ., und nicht in der Reihenfolge, in der sie ursprünglich vor dem Sortieren eingegeben wurden.
echo '<ul class="custom_repeatable">'; foreach ($custom_repeatable as $string) { echo '<li>'.$string.'</li>'; } echo '</ul>';
Dieses Beispiel gibt eine ungeordnete Liste aller im $custom_repeatable
-Array enthaltenen Zeichenfolgen aus.
Für unsere Beitragsliste und Bildfelder speichern wir eine ID. In seltenen Fällen möchten Sie möglicherweise nur die ID ausgeben, höchstwahrscheinlich möchten Sie die ID jedoch verwenden, um weitere Informationen zu erhalten.
$custom_post_id = $post_meta_data['custom_post_id'][0]; echo '<a href="'.get_permalink($custom_post_id).'">'.get_the_title($custom_post_id).'</a>'; $custom_image = $post_meta_data['custom_image'][0]; echo wp_get_attachment_image($custom_image, 'thumbnail');
Dieses Tutorial zeigt die einfachste Möglichkeit, die von uns gespeicherten Daten über eine wiederverwendbare benutzerdefinierte Meta-Box zu verwenden. Die Möglichkeit, zusätzliche Daten zu speichern und in Themes und Plugins zu verwenden, eröffnet WordPress völlig neue Möglichkeiten. Wofür werden Sie es verwenden?
Das obige ist der detaillierte Inhalt vonWiederverwendbare benutzerdefinierte Metabox mit Daten Teil 4. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!