Ich hab eine Wordpress Seite gebaut, die in der Sidebar alle Pages anzeigt, die unterhalb einer festgelegten "Mutterseite" (hier: "Unsere Künstler) eingeordnet sind. Da ein einfacher Link nicht reicht, sondern zusätzlich zum Link immer noch ein Thumbnail-Bild (das man per "Benutzerdefiniertem Feld" angeben kann) angezeigt werden soll, hab ich auf die Funktion
get_pages() zurückgegriffen.
Ich brauch aber nicht ALLE untergeordneten Seiten, sondern nur die der "ersten Hierarchiestufe" ...
Hier der Link zur "Arbeits-Seite:"
Und das ist der Code, mit dem ich diese Auflistung der Moderatoren inkl. Thumbnail-Bild gebastelt habe
<?php
/*
KÜNSTLER-GALERIE
Listet alle PAGES unterhalb einer festzulegenden Mutterseite in Galerie-Form auf.
Als Bild wird der Bildname benutzt, den man im Posting im benutzerdefinierten Feld "thumbnail" eingibt
Pfad zum Thumbnail-Ordner sowie ID der Künstler-"Mutterseite" kann hier eingegeben werden
*/
$thumb_path_grey = "wp-uploads/kuenstler_grau"; //Pfad zum SW-Thumbnail-Ordner angeben (ausgehend vom Hauptverzeichnis)
$parent_ID = 4; //ID der Künstler-"Mutterseite" angeben
$spalte = 0;
$posts= get_pages('sort_column=menu_order&child_of='.$parent_ID);
foreach($posts as $post) {
$thumb_image = get_post_meta($post->ID, 'thumbnail', true); //Name des Thumbnail-Bildes (benutzerdef. Feld)
if ($post->post_parent == $parent_ID) { $spalte ++;
?>
<div class="kuenstler">
<p class="thumbnail"><a style="background-image: url(<?php bloginfo('wpurl'); ?>/<?php echo($thumb_path_grey); ?>/<?php echo($thumb_image); ?>)" href="<?php the_permalink(); ?>"></a></p>
<p class="text"><small><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></small></p>
</div>
<?php } if ($spalte == 3) { ?>
<div class="break"></div>
<?php $spalte = 0; } } ?>
Alles anzeigen
Anmerkung: Die Seite "Unsere Künstler" hat die ID 4 ... Aber jeder "Künstler" hat noch ein paar weitere "Unterseiten", und die werden alle mit abgefragt.
Die if-Abfrage
sorgt in meinem Fall übrigens dafür, dass nicht auch die "Unter-Unterseiten" angezeigt werden ... anders hab ich's nicht hingekriegt.
Aber ich hätte es gerne anders: Kann man irgendwie dafür sorgen, dass nur die Seiten, die direkt unter "Unsere Künstler" stehen, abgefragt werden? Ähnlich wie "depth" beim Template-Tag wp_listpages(); ...?
Bislang gibt es zwar keine Performance-Probleme - nur über 50 Abfragen pro Seite erscheinen mir dann schon n büschn viel. Vor allem, wenn vielleicht noch ein paar Künstler mit "Biografie" und "Sendeterminen" dazukommen - oder einige der bereits angelegten Künstler noch weitere Unterseiten bekommen sollen ... da wäre man dann ziemlich bald bei ca. 100 Abfragen pro Seite.
... Kann sowas nachher für einen schlimm langsamen Auftritt sorgen, oder muss man sich da nicht so nen Kopf machen?