this is both a wordpress / sage question, i’ve been looking into the wordpress documentation on how to create a siblings menu for pages like this hierarchy
parent page
child a
child b
child c
and i couldn’t find any good function that returned an array of results, all i found returns the actual menu, so i’m confused in how to implement this and loop the result on the blade template.
can anyone point me to the right direction? 
if you need a menu with a class to know where are you placed (aka .current)
you’ll need a new simple function:
public function childMenu() {
global $post;
// Set up the objects needed
$childQuery = new \WP_Query();
$pages = $childQuery->query(array('post_type' => 'page', 'posts_per_page' => '-1'));
if ( is_page() && $post->post_parent ){
$childpages = get_page_children( $post->post_parent, $pages);
}
else{
$childpages = get_page_children( $post->ID, $pages);
}
return $childpages;
}
//we need this to compare with the current page
public function currentUrl() {
return wp_make_link_relative(get_permalink( $post->ID ));
}
so with those 2 functions on your app controller you’ll be able to make a loop in your template like this one:
<nav class="secondary-nav">
<ul>
@foreach($child_menu as $child)
<li @if(wp_make_link_relative(get_permalink($child->ID)) == $current_url)class="is-active" @endif>
<a href="{!! get_permalink($child->ID) !!}">{{$child->post_title}}</a>
</li>
@endforeach
</ul>
</nav>
learned the hard way that you can use wordpress functions without the @php wrapper.
thanks @alwaysblank for your guide and recomendations
I would strongly caution against using the guid
as your URL. The guid
's only purpose is to serve as a globally unique identifier for whatever object it’s attached to: The fact that it contains a URL is nice, but not something you should rely on. From a development perspective, you should generally regard the fact that the guid
includes a URL to the resource as a coincidence, not as a feature you can rely on.
If you want the URL of a post or page, you should just use get_permalink(get_the_ID())
or some variation on that theme.
1 Like
I believe this code is not working anymore 