treehouse : what would you like to learn today?
Web Design Web Development iOS Development

[Solved] How can I display all of my pages on a single page in Wordpress?

  • I'm experimenting with a one page design. I want each page in the back end to display as a different section. Is there a way to loop through my pages and display them all?
  • Oooo I like answering the easy WP questions!
    <?php query_posts('post_type=page'); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <?php the_title(); ?>

    <?php the_content(); ?>
    <?php endwhile; endif; ?>
  • I"m not in a place I can test, but I trust you. Thanks a lot Doc.
  • When they display, they art sorted by their "Order" number, which is fine, But it's putting the lowest at the bottom. How can I reverse the order they're displayed?
  • And also, how could I exclude sub-pages?
  • <?php query_posts('post_type=page&order=ASC'); ?>

    As far as I know, you can't exclude subpages when doing a query unless you manually specify the pages.

    You can do that with the 'depth' parameter in wp_list_pages though.
  • Thanks a lot for the help Doc :)
  • How do I use the depth parameter? I can't figure it out :(
  • You can only use the depth parameter with wp_list_pages. So something like this:
    <?php wp_list_pages('depth=1'); ?>

    This cannot be used with the regular Loop.
  • Ah, I see.

    So if I wanted to add mark up to the generated pages, but I'm not using a loop, how would I do that?
  • The wp_list_pages function only lists the titles. If you want to have the content show you'll have to use the loop.

    If you know the IDs of the pages then you can just run a loop of those specific pages. The only thing you can do, really.
  • Shucks.

    Thanks for all the help Doc
  • Okay, here is an update. I found a working solution and shows only the top level pages. that I can even add mark up to. But another issue came up. Here is the code:

    <?php 
    $pages = get_pages('parent=0');
    foreach ($pages as $pagg) {
    $option .= $pagg-><div class="section">;
    $option .= $pagg->post_title;
    $option .= $pagg->post_content;
    $option .= $pagg-></div>;
    echo $option;
    }
    ?>


    The problem is the content from the pages has been stripped of all it's html. There's no formatting in it. Any way I can keep it?
  • I have a similar question, I want to add all pages (where the user has checked the option while publishing) to add the page to the single page?