OK, back to srs business posts now…
One of my current top secret projects (it’s not that exciting, I’m just helping someone convert their site to WordPress) involves creating pages with a list of child pages on ’em. Back in ye olde days I’d have done this manually (which meant every time a child page was added the parent had to be modified) or farted about with SQL queries but Modern Day WordPress seems to have a function for everything and so it’s much simpler. So, without further ado…
Create the template:
<?php /* Template Name: Sub Page */ ?> <?php get_header(); ?> <div id="content"> <h2><?php the_title(); ?></h2> <?php $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0'); if ($children) { ?> <ul> <?php echo $children; ?> </ul> <?php } if ($post->post_parent) echo '<a href="'. get_permalink($post->post_parent) .'">« Back to '. get_the_title($post->post_parent) .'</a>'; ?> </div> <?php get_sidebar(); ?> <?php get_footer(); ?>
Save it as subpage.php, upload it to your theme directory and then whenever you just want a list of sub (child) pages, select Sub Page from the Template dropdown on the right. Ner nerrr!
Tip: if you wanted a section intro instead of just a list of links, bung <?php if ( have_posts() ) { while ( have_posts() ) { the_post(); ?><?php the_content(); ?><?php } } ?>
after the h2 title stuff.
15 Jun at 7:03 pm
My post ate some of the code o.O
15 Jun at 7:16 pm
It’s also possible to take that further using custom fields in the pages and displaying them like posts. http://teamhotstuff.co.uk/learn/drivers is just a page template which displays the child pages, except in a slightly more filled-out way. :)
15 Jun at 7:40 pm
Old news :P
15 Jun at 10:47 pm
Ha! I was thinking "Oh neat! I always wanted to know how to do that" and all the other commenters are like "Uh, Jem, we already knew that". Hee, I think we’re both behind the ball… except you have an excuse considering you don’t actually use WP :D
16 Jun at 4:14 am
Whoa! THANKS! I’ve been sooo ready to make some uber "complex" sql query for this (in my new theme which might make it online sometime this centrury). :B
My googling skills fail *sniffles*
16 Jun at 6:18 am
@Kalliste: I’ve known about listing child pages for quite a while, it just took me some time to put Templates and the child page listing together. It was definitely one of those "D’OH! Why didn’t I do this years ago?" moments.
16 Jun at 12:08 pm
Oh oh, technical stuff….off to the kettle and coffee for me lol :o)
18 Jun at 8:44 pm
*bookmarked*
18 Jun at 9:49 pm
Good job, Jem! You finally figured out what I learnt way back in 2008 when I was still a WordPress n00b!
LOL, I jest, I jest … The first time I read this entry, I couldn’t believe that I learnt something about coding before you did!
In fact, I thought I was reading incorrectly at first, but once I confirmed that I was right, I couldn’t resist the chance to act a bit like my former online persona. :P