HowTo: Child Pages mit Artikelbild auflisten

Wenn man sich auf etwas verlassen kann, dann ist es die Hilfsbereitschaft unter uns Bloggern. Finde ich immer wieder faszinierend, wie man zusammen ans Ziel kommt. Mein Problem, eine Übersichtsseite für das Setup so zu bauen, dass deren Darstellung automatisch erfolgt, wurde innerhalb kürzester Zeit gelöst. Ehrensache, dass ich die Lösung mit euch teile. Vielleicht kann das ja jemand mal gebrauchen.

Das Projekt bestand aus mehreren Teilaufgaben. Fangen wir mit dem kniffeligsten Part an.

Child Pages auflisten, mit Bild

Ziel war, das erste Bild der Child Page (also das Bild von der Seite des Nerds) sowie den Namen des Teilnehmers inklusive des beschreibenden Textes so in einen Loop zu basteln, so dass schließlich eine Übersicht daraus entsteht. Dafür sind ja Übersichtsseiten da – habe ich mal gehört. Vorrausetzung für die ganze Bastelei ist das Anlegen einer Seitenvorlage, wobei ich hier die page.php des Themes genommen habe, um dort alle folgenden Modifikationen unterzubringen. Damit die neue Vorlage unter den Seitenvorlagen auftaucht, ergänzt man den Kopf um die nachfolgende Zeile und speichert sie unter einem neuen Namen ab, hier setup.php.

<?php /* Template Name: Setup */ ?>

Den ersten Ansatz zur Lösung des eigentlichen Aufgabe lieferte Sven mit seinem Kommentar. Das passte allerdings noch nicht ganz, denn das mit dem Bild wollte noch nicht funktionieren. Hinweis von @JerikoOne – das Plugin Get The Image tut genau das, was hier benötigt wird. Genial – sowohl Plugin, als auch Jeriko. Der war es dann auch, der zusammen mit Martin folgendes, funktionierendes Konstrukt geschaffen hat:

<?php
$parent = $post->ID;
$args = array(
'post_type' => 'page',
'post_parent' => $parent,
// Definition, wieviel Bilder auf der Seite angezeigt werden, hier 10
'posts_per_page' => 10,
'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1),
	);
query_posts($args);
while (have_posts()) : the_post();
?>
// Anzeige des Bildes mit Get The Image
<?php get_the_image( array( 'size' => 'full' ) ); ?>
// Name inkl. Link, Custom Field
<p class="titel_bild"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> - <?php echo get_post_meta($post->ID, 'nerdsub', true); ?></p>
<?php endwhile; ?>

Dieser Code findet an der Stelle sein Zuhause, wo in der page.php ursprünglich der Entry-Content platziert war. Klar soweit? Fehlt nur noch die…

Paginierung der Übersicht

Auch das war nicht so einfach – hier half viel Voodoo und das Jonglieren mit Variablen (Ergebnis siehe oben) – ohne den Tipp von Jeriko und die Hilfe von Martin müssten wir wohl für immer und ewig auf das Durchblättern der Übersicht verzichten.

Steht das Gerüst, kann man die Paginierung entweder auf die traditionelle Art und Weise erledigen…

<?php next_posts_link('&laquo; Older Entries') ?>
<?php previous_posts_link('Newer Entries &raquo;') ?>

…oder man entscheidet sich für eine hübschere Variante. Ich habe dafür Sergej Müllers Lösung “Pagebar zum Blättern der Seiten ohne Plugins realisieren” gewählt, vor allem, weil sie einfach anzupassen ist und ich nicht noch ein Plugin installieren wollte.

Custom Fields für die Bildunterschrift nutzen

Auf diesen Part bin ich besonders stolz, denn das habe ich ausnahmsweise mal selbst hinbekommen. Ok, selbst im Netz gefunden und entsprechend umgesetzt.

Für den Teil der Bildunterschrift hinter dem Namen des Nerds nutze ich ein benutzerdefiniertes Feld (Custom Field). Dieses definiert man im Beitrag selbst und gibt ihm als Wert den Text mit, der letztendlich dort stehen soll. Logisch, oder? Der Name des Feldes lautet bei mir “nerdsub”. Das sieht dann so aus:

In der Vorlage der Übersicht baut man dann im Loop hinter den Link (siehe Quelltext weiter oben) die Abfrage des Wertes ein:

<?php echo get_post_meta($post->ID, 'nerdsub', true); ?>

Das war’s schon. Hätte ich mir schwieriger vorgestellt.

Anzahl der Childpages ausgeben

Oberhalb der Übersicht steht im einleitenden Text auch, wieviel Teilnehmer bereits im Setup vertreten sind. Diesen Wert habe ich früher von Hand ergänzt – wie unprofessionell! Das machen wir jetzt anders, nämlich so:

<?php echo count(get_pages('child_of=' . $post->ID));?>

Damit wären dann all meine Anforderungen erfüllt. Vielen herzlichen Dank an alle, die zur Lösung des Problems beigetragen haben. Wenn es jetzt noch neue Setups hagelt, bin ich vollends zufrieden…

16 Comments « Add yours   5 Retweets   1 Shares

{ 15 comments… read them below or add one }

Martin Schneyra

Schön, dass das nun alles geklappt hat! Jetzt kann es richtig losgehen und du kannst die 200 dieses Jahr voll machen.

Antworten

ad

Wenn ich JETZT SOFORT alle Setups bekommen würde, die man mir versprochen hat, würde das sogar noch diesen Monat klappen. :hehehe:

Danke nochmal.

Antworten

Ben

Also ich sehe da immer noch keine Veränderung, denn es ist genau so, wie vor 1 Woche auch ?

LG

Antworten

ad

Ich dachte, du hättest verstanden, worum es ging…

Vorher habe ich die Übersichtsseite manuell geändert, wenn ein Beitrag hinzugefügt wurde. Jetzt funktioniert das automatisch.

Dass man jetzt keinen Unterscheid sieht, ist ABSICHT! ;)

Antworten

Ben

ahhh ja okay, man sollte wohl zweimal lesen. :D

Dank Dir. ;)

Antworten

Frank

Die Bildunterschriften könntest du noch an das jeweilige Bild hängen, da sind ja genug Felder, dann sparst du dir auch dieses Custom Field.
Die Pagination könntest mit Bordmitteln realisieren, WP hat dafür Hilfsmittel. Eine Alternative mit etwas Komfort ist diese Funktion get_paginate_bar().

Antworten

ad

Man lernt nie aus. Nun ist es zu spät, die Fields sind drin. :)

get_paginate_bar() hat aber auch nicht weniger Code, als die Lösung von Sergej. Ich lass das so, glaube ich.

Aber danke! – Was macht die Erkältung?

Antworten

Frank

Danke der Nachfrage, weiter beschiss…
Nein, es ist näher am Standard, was eventuell weniger Sorgen macht. Texte, kann ich verstehen – Handarbeit war ja gestern, las ich.

Antworten

Sergej Müller

Das stimmt, paginate_links ist ebenfalls smart und dafür auch noch Standard. Allerdings erlaubt mein Snippet mehr Eingriffe in die Formatierung der Ausgabe. Ist immer Geschmacksache.

Antworten

Matthias

Stimmt, dem Bild gibst du ein caption oder description mit – recht einfach in der Mediathek. Was die neuen Custom-Fields betrifft, so kannst du doch eine Abfrage starten … je nachdem wird dann erst die Bildbeschreibung abgefragt oder dann das Custom Field genutzt. Ansonsten, schön geworden.

Antworten

ad

Jetzt fehlt nur noch Vladimir, und dann ist die gesamte WP-Prominenz hier in den Kommentaren vertreten… :D

Ok. In den Pingbacks ist er ja zumindest schon.

Antworten

Sergej Müller

Nur das wolltest du erreichen: Aufmerksamkeit ;)

Antworten

ad

Ertappt! :eek:

Antworten

Christian

Danke, genau was ich gesucht hab. Hat bei mir allerdings nicht ganz funktioniert. Die Methode “get_the_image” brachte einen Fehler und deshalb hab ich “get_the_post_thumbnail” verwendet.

Antworten

Christian

Nachtrag: Hatte natürlich das extra Plugin nicht installiert….

Antworten

{ 1 trackback }

Leave a Comment

Previous post:

Next post: