get_pagesを使用してWordPressの直接の子ページのみを取得する


20

ページのすべての直接の子を取得しようとしています。しかし、私はすべての子供と孫も同様に取得しています。何か案は?

PHPソース:

$args = array( 
        'child_of' => $post->ID, 
        'parent ' => $post->ID,
        'hierarchical' => 0,
        'sort_column' => 'menu_order', 
        'sort_order' => 'asc'
);
$mypages = get_pages( $args );

foreach( $mypages as $post )
{

$post_tempalte = the_page_template_part();

get_template_part( 'content' , $post_tempalte );
}

$argsドキュメントによれば正しいはずですが、それは完全に無視しparentていhierarchicalます。

私のページ構造は次のとおりです。


-child 1
-child 2
--Child子供1〜2
--Child 2子2に
-child 3

そして、私は取得したいchild 1child 2child 3


depthオプションも検討してみてください。私が発見し、動作しているようだもう一つの解決策は$mypages = get_pages('child_of='.$post->ID.'&sort_column=post_date&sort_order=desc&parent='.$post->ID); ここにあなたが変更することができますsort_columnsort_order必要性につきとして。
ロヒトパンデ

@RohitPandeはdepth設定、すべてで私を助けていなかったchild_ofし、parentそれがあったと同じに。
フォルカーE.

回答:


12

パラメータ「親」を確認してください。名前の後にスペースがあるようです。


うん とてもばかげている。しかし、ありがとう、それは私に時間を節約しました。:)
jamietelin

3

「wp_list_pages」または「get_pages」関数のパラメーター「depth」を使用して、取得するレベル数を定義できます。したがって、ここでは、現在のページの最初の子レベルをすべて表示します。

            <?php global $post;
                    wp_list_pages( array(
                    'child_of' => $post->ID, // Only pages that are children of the current page
                    'depth' => 1 ,   // Only show one level of hierarchy
                    'sort_order' => 'asc'
                ));
            ?>

get_pages関数にはdepth引数がないように見えるか、少なくとも文書化されていません:developer.wordpress.org/reference/functions/get_pages
kloddant
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.