web-dev-qa-db-fra.com

get_children () ne fonctionne pas avec le paramètre orderby

J'essaie d'utiliser le paramètre orderby dans la fonction get_children comme ci-dessous:

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

Mais cela n’a aucun effet sur le résultat; il est toujours en cours de commande par la date de création par défaut.

Des idées?

5
Matt Humphrey

Êtes-vous sûr d'avoir besoin de cette fonction spécifique? La documentation (à la fois du Codex et en ligne) prête à confusion. Et il est censé aller chercher des choses comme des pièces jointes, qui ne sont probablement pas pertinentes pour la navigation ...

Essaye ça:

get_posts( array(
    'post_type' => 'page',
    'post_parent' => $parent->ID,
    'orderby' => 'menu_order'
) );
12
Rarst

L'argument 'orderby' devrait fonctionner avec get_children() car get_children() est en réalité juste un wrapper autour de get_posts() avec un jeu de valeurs par défaut différent. L'ordre des menus fait référence à la Ordre spécifiée dans la zone Attributs de page méta lors de l'édition d'une page ... et non à l'ordre dans lequel vous avez trié un menu personnalisé.

4
goldenapples

Vous pouvez utiliser le $args dans get_children, mais assurez-vous également de spécifier l'ID de publication à partir duquel vous souhaitez récupérer les enfants, même s'il s'agit de la page en cours que vous souhaitez.

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