WordPress.org

Support

Support » Plugins and Hacks » Get Children of Current Page (within page content)

Get Children of Current Page (within page content)

  • I’m trying to create a list of child pages of the current page only. But I also only want this list to show up on certain pages that have children, not all pages with children. So I decided to do this with the RunPHP plugin and put the code directly in the page content. I tried using this code from the codex in the page content:

    The following example will generate a list only if there are child (Pages that designate the current page as a Parent) for the current Page:
    
    <?php
      $children = wp_list_pages('title_li=&amp;child_of='.$post->ID.'&amp;echo=0');
      if ($children) { ?>
      <ul>
      <?php echo $children; ?>
      </ul>
      <?php } ?>

    That produced errors on the page. So I tried this, and it just gave me a hierarchy of all the pages and sub-pages that I have in the database:

    <?php
      $children = wp_list_pages('title_li=&amp;child_of='.$post->ID.'&amp;echo=0');
    if ($children) {
      echo "<ul>";
      echo $children;
      echo "</ul>";
    }
    ?>

    Just like this does:

    <ul>
    <?php
    wp_list_pages('title_li=&amp;child_of='.$post->ID.''); ?>
    </ul>

    Is there a way to do show direct children on a page within the content? Maybe it would be more elegant to do it in the page php file in my theme, but I couldn’t figure a way to confine it to only certain children.

    Thanks

Viewing 7 replies - 1 through 7 (of 7 total)
  • Review some of the examples listing in the wp_list_pages() article.

    If necessary, paste all the code from your template in a pastebin and report the link back here.

    Note, you didn’t say what errors were produced….

    Thanks Michael, it just produced syntax errors when I tried to use the example “The following example will generate a list only if there are child (Pages that designate the current page as a Parent) for the current Page”:

    Parse error: syntax error, unexpected $end in /home/fizzbath/public_html/store/wp-content/plugins/runPHP/runphp.php(410) : eval()’d code on line 3

    Parse error: syntax error, unexpected ‘}’ in /home/fizzbath/public_html/store/wp-content/plugins/runPHP/runphp.php(410) : eval()’d code on line 1

    The code works fine in the template though.

    The problem is I’m trying to do this in actual page content with RunPHP plugin. I only want to use this on a few pages, not all pages with children. If I use the exclude pages example then I will have to change the template every time I add a page which is frequent. If I use the include pages example then I will have to change the template whenever I add a page to list children, which is also frequent (but slightly less frequent).

    Since it works fine in the template I may just resort to that. It will just be a little more maintenance in the long run.

    May it’s better to point you to the Template Tags Shortcodes plugin instead.

    Since you know what Pages you want to display the children, then just use something like this in your Page’s content:

    <ul>[wp_list_pages child_of=64 title_li=""]</ul>

    Now the above assumes that 64 is the parent post ID, but you will know that value.

    Ovidiu
    Participant

    @ovidiu

    ahhhh…. great example, thanks 🙂

    I have been reading this: http://codex.wordpress.org/Template_Tags/wp_list_pages but it seems what I want to do sin’t possible:

    I’d like to output the subpages of a given page inside <h4> tags instead of

  • tags.
  • would that be somehow possible?

vteixeira
Member

@vteixeira

I think you should just use get_pages and wrap an h4 tag on each page using foreach.

I think it should work:

<?php
	$pages = get_pages('child_of='.$post->ID.'&sort_column=post_title');
	$count = 0;
	foreach($pages as $page)
	{ ?>
		<h4><a href="<?php echo get_page_link($page->ID) ?>"><?php echo $page->post_title ?></a></h4>
	<?php
	}
?>

vteixeira,

That codes works perfectly.

Is there any way to restrict the number of pages being displayed?

I tried adding &number=5 to display 5 but i get nil result.

Cheers

Benjamin

silvanasono
Member

@silvanasono

Thank you very much Vteixeira

Viewing 7 replies - 1 through 7 (of 7 total)
  • The topic ‘Get Children of Current Page (within page content)’ is closed to new replies.