我有一些代码可以显示单个页面的子级。我使用它在页脚中显示页面的子级。
$args = [
\'post_type\'=>\'page\', //this is the custom post type
\'child_of\'=> \'1452\',
];
// we get an array of posts objects
$posts = get_posts($args);
// start our string
$str = \'<ul>\';
// then we create an option for each post
foreach($posts as $key=>$post){
$str .= \'<li><a href=" \'.get_permalink($post).\' ">\'.$post->post_title.\'</a>
</li>\';
}
$str .= \'</ul>\';
echo $str;
}
但是我想显示多个页面的子页面——当然,当我尝试使用多个代码实例时,它只显示第一个ID。
我试着把它变成一个函数,但我无法让它工作。这可能是一个非常愚蠢的问题,但我是一个小时间的PHP黑客。
编辑:我刚刚看到,它不仅从我指定的页面ID中提取子项,还从任何地方提取一些子项。非常奇怪。
最合适的回答,由SO网友:Mayeenul Islam 整理而成
这是一个工作代码。如果你把代码放在适当的地方,它肯定会起作用。您可以将其用作函数,甚至是短代码。
global $post;
$parent_id = $post->ID; //if you are within a loop
$childpages = new WP_Query([
\'post_type\' => \'page\',
\'post_parent\' => intval( $parent_id ),
\'posts_per_page\'=> 3, // your choice
\'orderby\' => \'menu_order\', // your choice
\'post_status\' => \'publish\'
]);
if( $childpages->have_posts() ) :
echo \'<ul>\';
while( $childpages->have_posts() ) : $childpages->the_post();
echo \'<li><a href="\'. esc_url(get_the_permalink()) .\'" rel="bookmark">\'. esc_html(get_the_title()) .\'</a></li>\';
endwhile; wp_reset_postdata();
echo \'</ul>\';
endif;
进一步阅读
WP_Query()
class — WordPress Developer Resources