What the code snippet does is check if the current page has a parent page and returns the value. You could do a check then with a simple if statement like:
if(is_subpage()){
do something
}
else { do other things }
Hope this helps. 🙂
Thread Starter
lenuam
(@lenuam)
Hey, thanks for your reply.
I already understood the code snippet, though :-)…
I’ll try to describe it a bit better:
I want my vertical navigation (displaying only subpages) to appear in two cases:
1. The page is a subpage.
2. The page has subpages.
1. is accomplished by the code snippet, but I’m having a hard time trying to figure out how to accomplish 2.
Of course I could always include the vertical navigation for specific pages (e.g. if (is_page(‘about’)) ), but I’d prefer to do it dynamically…
1. is accomplished by the code snippet, but I’m having a hard time trying to figure out how to accomplish 2.
Try below code.
if($post->post_parent){
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
}else{
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
}
if($children){
...do something
}
Thread Starter
lenuam
(@lenuam)
Hey, thanks so much, it works perfectly 🙂
Drat! that is not working for me at all 🙁
In my case, I want to show a heading followed by the list of children (of pages, not posts); and I want to hide the heading if page has no child pages.
I can already hide/show the children, but I want to do nearly what Lenuam is doing except I just want to return true or false if the page has children. So I took the code above and tried to create a function out of it:
function has_subpage(){
if( is_page() && $post->post_parent){
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
}else{
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
};
if($children){
return true;
}else{
return false;
};
}
Unfortunately, all I ever get returned is a 1 even when the page has not children. Here’s what I’m working on (please ignore the formatting — I’m just trying to get the logic in before applying a template and style):
Top of the right margin, it will say “Pages within BBQ”, after which is a “Subpage value: #” where I’m testing the function.
Now click Lodging on the global nav — Lodging has no child pages. The Subpage value still reads 1. Why wouldn’t it read 0?
Thanks!
-Sigo
Oops. Forgot to close the anchor tag. Sorry!
Actually, I found the answer on Template Tags/wp list pages