WordPress.org

Ready to get started?Download WordPress

Forums

Get Children of Current Page (within page content) (8 posts)

  1. caemusic
    Member
    Posted 5 years ago #

    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

  2. MichaelH
    Member
    Posted 5 years ago #

    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....

  3. caemusic
    Member
    Posted 5 years ago #

    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.

  4. MichaelH
    Member
    Posted 5 years ago #

    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.

  5. Ovidiu
    Member
    Posted 4 years ago #

    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

  6. tags.

    would that be somehow possible?

  • vteixeira
    Member
    Posted 4 years ago #

    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
    	}
    ?>
  • chefben
    Member
    Posted 4 years ago #

    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
    Posted 4 years ago #

    Thank you very much Vteixeira

  • Topic Closed

    This topic has been closed to new replies.

    About this Topic

    Tags