Anzeigen von benutzerdefinierten Beitragstypen – Vorlagen und Abfragen

Veröffentlicht: 2016-09-26

Dies ist der dritte und letzte Artikel unserer Serie über Custom Post Types (CPT). Die Themen, die wir in den ersten beiden besprochen haben, waren:

  • Benutzerdefinierte Beitragstypen (wie man sie erstellt)
  • Benutzerdefinierte Taxonomien

Im ersten und zweiten Artikel haben wir den benutzerdefinierten Beitragstyp „ testimonials “ und die benutzerdefinierte Taxonomie „ testimonial_service “ registriert. Wir müssen jetzt die Testimonials auf unserer Website anzeigen. Wir werden uns also ansehen, wie Sie eine Vorlage für unsere Testimonials erstellen, wie Sie sie abfragen und wie Sie sie überall auf unserer Website anzeigen können.

Standardmäßige Vorlagen für benutzerdefinierte Beitragstypen

Wir haben unser CPT mit dem auf true gesetzten Parameter has_archive erstellt, wodurch alle Testimonials auf einer Archivseite angezeigt werden .

WordPress verwendet eine Vorlagenhierarchie, um verschiedene Arten von Inhalten anzuzeigen. Für den benutzerdefinierten Beitragstyp wird nach Folgendem gesucht:

archive-{post_type}.php
single-{post_type}.php

Wenn diese Vorlagen nicht im Design definiert sind, wird nach den allgemeinen Vorlagen gesucht:

Archiv.php
single.php

Wenn selbst diese Vorlagen nicht definiert sind, wird standardmäßig die index.php- Vorlage verwendet.

In unserem Fall hat das Shaka-Theme die single.php , aber nicht die archive.php -Vorlage. Dies bedeutet, dass standardmäßig die Vorlage single.php für die einzelne Testimonial-Seite verwendet wird. Es wird auch die index.php- Vorlage verwenden, um alle Testimonials auf der Testimonials-Archivseite anzuzeigen.

Die Testimonials werden auf der Archivseite der Testimonials angezeigt, die sich auf dieser Seite befindet:

http://ihre-domain-geht-hier.com/ ?post_type=testimonials

Wenn Sie die hübschen Permalinks aktiviert haben, können Sie die Seite auch mit dieser URL aufrufen:

http://Ihre-Domain-geht-here.com/ Erfahrungsberichte

(Hinweis: Wenn die hübschen Permalinks für Sie nicht funktionieren, gehen Sie zu wp-admin -> Einstellungen -> Permalinks und richten Sie sie so ein, wie Sie sie möchten, und speichern Sie die Einstellungen.)

Zuerst sollten wir einige Testimonials in die neu registrierten CPT Testimonials schreiben, damit wir einige Daten zum Anzeigen haben. Ich habe 3 Testimonials hinzugefügt und so sieht das Standardlayout der Testimonials-Archivseite in unserem Shaka-Design aus:

Zeugnisse-Standard

Wie Sie sehen können, ist das Layout in Ordnung, aber einige der angezeigten Daten werden nicht benötigt, wie „von Autor“ und das Datum. Auch die benutzerdefinierte Taxonomie testimonial_service wird nicht angezeigt, daher werden wir diese in unseren benutzerdefinierten Vorlagen hinzufügen.

Erstellen benutzerdefinierter Vorlagen für unser CPT

Wie im vorherigen Abschnitt erwähnt, müssen wir zwei Vorlagen erstellen. Die archive-testimonials.php und die single-testimonials.php . Für dieses Beispiel erstellen wir nur die Vorlage archive-testimonials.php .

Wir sollten diese Dateien in einem Child-Theme erstellen, aber der Einfachheit halber füge ich die Datei archive-testimonials.php direkt im Shaka-Theme hinzu. Ich kopiere die Datei index.php, die als Ausgangspunkt dient, und benenne sie in archive-testimonials.php um.

Ich habe „von Autor“, den Datumscode und die Seitenleiste entfernt. Ich habe die vorgestellten Bilder und die benutzerdefinierte Taxonomie des Testimonials-Service hinzugefügt. Ich habe die WP-Funktion the_terms verwendet, die eine Liste bestimmter WP-Begriffe anzeigt, in unserem Fall die benutzerdefinierte Taxonomie.

Zeugnisse fertig

Ich weiß, dass es ästhetisch nicht großartig aussieht, aber darum geht es nicht. Wir wollten eine andere Struktur/Layout der Testimonials-Archivseite mit anderen Daten erstellen, und das war in wenigen Minuten erledigt.

Das Gleiche könnten wir auch für die Seite mit den einzelnen Testimonials tun. Wir würden die Datei single.php kopieren und in single-testimonials.php umbenennen und den Code von dort aus ändern.

Ich habe hier keinen Code gezeigt, da die Codebeispiele für jedes Thema anders wären und einige Grundkenntnisse in HTML und PHP erforderlich sind, um Vorlagen zu codieren. Aber es ist immer einfacher, ein bestehendes Template zu modifizieren, deshalb haben wir die index.php als Ausgangspunkt verwendet.

Abfragen von benutzerdefinierten Beitragstypen

Eine andere Möglichkeit, benutzerdefinierte Beitragstypen auf Ihrer Website anzuzeigen, besteht darin, die WP_Query-Klasse zu verwenden, um die benutzerdefinierten Beitragstypen abzurufen (durchzuschleifen und anzuzeigen).

Angenommen, Sie möchten ein Widget erstellen, das alle Testimonials in einem Karussell anzeigt. Oder Sie möchten verwandte Testimonials (dieselbe Testimonial-Service-Taxonomie) auf der einzelnen Testimonial-Seite anzeigen. Sie würden die Klasse WP_Query verwenden, um die relevanten Testimonials abzurufen.

In unserem Beispiel werden wir alle Testimonials abrufen, die sich in der benutzerdefinierten Taxonomie des Testimonial-Service „Tauchen“ befinden, und wir werden sie in einer Liste ausgeben:

 <?php $args = array( 'post_type' => 'testimonials', 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'testimonial_service', 'field' => 'slug', 'terms' => 'diving' ) ) ); $testimonials = new WP_Query( $args ); if( $testimonials->have_posts() ) : ?> <ul> <?php while( $testimonials->have_posts() ) : $testimonials->the_post(); ?> <li><?php printf( '%1$s - %2$s', get_the_title(), get_the_content() ); ?></li> <?php endwhile; wp_reset_postdata(); ?> </ul> <?php else : esc_html_e( 'No testimonials in the diving taxonomy!', 'text-domain' ); endif; ?>

Wie Sie im obigen Code sehen können, bereiten wir zuerst das Array der Argumenteinstellungen vor, das später bei der WP_Query Initialisierung verwendet wird. In diesem Array definieren wir zum Abrufen:

  • „Zeugnisse“ CPT,
  • nur die veröffentlichten Testimonials erhalten,
  • erhalten Sie nur die Erfahrungsberichte, die in der benutzerdefinierten Tauchtaxonomie „testimonial_service“ enthalten sind.

Wenn die new WP_Query aufgerufen wird, werden die relevanten Testimonials abgerufen und wir können sie durchlaufen. In der Schleife geben wir einfach den Titel (den ich für den Autorennamen verwendet habe) und den Inhalt des Erfahrungsberichts in einer einfachen Liste aus. Außerdem sollten wir immer die Funktion wp_reset_postdata verwenden, um auf die ursprüngliche Schleife zurückzusetzen, wenn wir eine WP_Query-Schleife verwenden. Dadurch wird sichergestellt, dass alles funktioniert, nachdem wir mit unserer benutzerdefinierten Abfrage fertig sind.

Dies waren die Grundlagen der benutzerdefinierten Beitragstypen, und ich hoffe, Sie verstehen jetzt, wie sie funktionieren. Wie bei jedem Thema gibt es immer mehr Details, auf die man eingehen kann. Ich würde Ihnen raten, die offizielle WP-Dokumentation für alle Funktionen und Klassen durchzugehen, die wir in diesen Beispielen verwendet haben. Lassen Sie es mich im Kommentarbereich unten wissen, wenn Sie Fragen haben.