Thread Starter
Equal
(@equalmark)
Having read that back you may struggle to understand so here it is a different way. Below if what I want to do in English! Just need this translating into PHP / WordPress functions etc.
If current page is a top level page
Does current page have child pages?
Yes
Display children
No
Do nothing
else
Does current page have child pages?
Yes
Display children
No
Display parent page and other pages at the same level as parents
End if
Hope that helps
Thanks
Thread Starter
Equal
(@equalmark)
Ok I have now managed to use this code to check what page I am on (parent or sub page):
<?php global $post; if ( is_page() && $post->post_parent ) { ?>
<!-- is a sub page -->
<p>I am a sub page</p>
<?php } else { ?>
<!-- not a subpage -->
<p>I am a parent Page</p>
<?php } ?>
The only problem is, is that if a page is both a parent to some child pages and a sub page of a parent it only returns that it is a sub page. How could I modify this?
I think I need something where it says “I am a sub page” that check to see if there are any children. How can I check to see if the page has children?
Thread Starter
Equal
(@equalmark)
This sounds so easy yet is proving so hard 🙁
This code:
http://codex.ww.wp.xz.cn/Template_Tags/wp_list_pages#List_subpages_even_if_on_a_subpage
works but only if have only 2 levels i.e. parent and child and not parent > child > grandchild.
Anyone any solutions?
Thread Starter
Equal
(@equalmark)
Actually I think I can do what I want if someone could help me with a simple if else statement to check whether a page has any children. Something like:
If has children > echo ‘has children’
else echo ‘no children’
Thanks
I’m still working on mine, but I think I’ve got something along what you need.
Mine is simply creating a menu structure, but I don’t know if wordpress has a way to test for current page (I thought I saw something somewhere along those lines), otherwise use of CSS and Javascript should allow you to hide or display.
This code does display children only under their appropriate parents. I haven’t yet tested grandchildren, but that should/would be just a matter of duplicating the $children = get_pages and the subsequent conditional statement (placing the duplicated code inside the current children conditional statement / foreach loop).
<ul>
<?php
$include_page_ids = array('3','5','7','9','19','11','13'); //also the order of appearance
for ($i = 0;$i < count($include_page_ids);$i++) {
$args = array('title_li'=>'','include' => $include_page_ids[$i]);
wp_list_pages( $args );
echo "<span class='zp-delimit'>|</span>";
$children = get_pages('child_of='.$include_page_ids[$i]);
if (count($children) > 0) {
$sub = "<ul class='childul'>";
foreach ($children as $child){
$sub .= "<li><a href='".get_page_link($child->ID)."'>";
$sub .= $child->post_title;
$sub .= "</a></li>";
}
$sub .="</ul>";
echo $sub;
}
}
?>
</ul>