web-dev-qa-db-ja.com

get_children()がorderbyパラメータで機能しない

以下のようにget_children関数でorderbyパラメータを使用しようとしています。

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

しかし、結果には影響しません。まだデフォルトの作成日で並べ替えています。

何か案は?

5
Matt Humphrey

この特定の機能が必要ですか?ドキュメンテーション(コーデックスとインラインの両方)は非常に混乱します。そしておそらくそれは添付ファイルのようなものをフェッチします、それはおそらくナビゲーションには関係がありません...

これを試して:

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

get_children()は実際にはget_children()のラッパーにすぎず、デフォルトの設定が異なるため、'orderby'引数はget_posts()と連携する必要があります。メニューの順序は、ページを編集するときに ページ属性 メタボックスで指定された 順序 を参照します。カスタムメニューをソートした順序ではありません。

4
goldenapples

$argsget_childrenを使用することができますが、たとえそれがあなたが望む現在のページの子供であっても、あなたが子供を取得したい投稿IDも指定するようにしてください。

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