get_children() Not Working with orderby Parameter

I am trying to use the orderby parameter in the get_children function as below:

$navigation = get_children(array(
  'post_parent' => $parent->ID,
  'orderby' => 'menu_order'
));

But it is having no effect on the result; it is still ordering by the default creation date.

Read More

Any ideas?

Related posts

Leave a Reply

3 comments

  1. Are you sure you need this specific function? Documentation (both Codex and inline) is verrry confusing. And it supposedly fetches things like attachments, which probably aren’t relevant for navigation…

    Try this:

    get_posts( array(
        'post_type' => 'page',
        'post_parent' => $parent->ID,
        'orderby' => 'menu_order'
    ) );
    
  2. The 'orderby' argument should work with get_children() because get_children() is really just a wrapper around get_posts() with a different set of defaults. The menu order refers to the Order specified in the Page Attributes meta box when editing a Page… not to the order you’ve sorted a custom menu into.

  3. You can use the $args in get_children, but ensure you also specify the post ID that you want to retrieve children from, even if it is the current page children you want

    get_children( array(
        'post_parent' => $post->ID,
        'orderby' => 'menu_order',
        'order' => 'ASC'
    ));