รับเฉพาะเพจย่อยโดยตรงใน WordPress ด้วย get_pages


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ควรจะถูกต้องตามเอกสารแต่ก็ไม่สนใจโดยสิ้นเชิงและparenthierarchical

โครงสร้างหน้าของฉันเป็นดังนี้:

ผู้ปกครอง
- เด็ก 1
- เด็ก 2 - เด็ก
1 ถึงเด็ก 2 - เด็ก
2 ถึงเด็ก 2
- เด็ก 3

และฉันเพียงต้องการที่จะได้รับchild 1, และchild 2child 3


ลองพิจารณาdepthตัวเลือกด้วย ทางออกอื่นที่ฉันพบและดูเหมือนว่าจะทำงานอยู่$mypages = get_pages('child_of='.$post->ID.'&sort_column=post_date&sort_order=desc&parent='.$post->ID); ที่นี่คุณสามารถเปลี่ยนsort_column& sort_orderตามต้องการ
Rohit Pande

@RohitPande depthไม่ได้ช่วยฉันเลยการตั้งค่าchild_ofและparentมันก็เหมือนกัน
Volker E.

คำตอบ:


12

โปรดตรวจสอบพารามิเตอร์ 'ผู้ปกครอง' ดูเหมือนว่ามีช่องว่างหลังจากชื่อ


โอ้พระเจ้า. โง่มาก. แต่ขอบคุณที่ช่วยฉันสักพัก :)
jamietelin

3

ด้วยพารามิเตอร์ 'ความลึก' ของฟังก์ชั่น "wp_list_pages" หรือ "get_pages" เราสามารถกำหนดจำนวนที่เราต้องการเรียกคืนได้ ดังนั้นที่นี่ฉันจะแสดงระดับลูกคนแรกของหน้าปัจจุบันทั้งหมด

            <?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 ไม่ปรากฏว่ามีการโต้แย้งลึกหรืออย่างน้อยก็ไม่ได้มีการบันทึกไว้: developer.wordpress.org/reference/functions/get_pages
kloddant
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.