我在父页面上使用以下代码显示子栏目列表和侧栏中这些子页面的精选帖子图片。
<?php $args = array(
'orderby' => 'menu_order',
'order' => 'ASC',
'post_parent' => $post->ID,
'post_type' => 'page',
'post_status' => 'publish'
);
$postslist = get_posts($args);
foreach ($postslist as $post) : setup_postdata($post);
?>
<div class="top10">
<a href="<?php the_permalink();?>">
<?php the_post_thumbnail('large'); ?>
</a>
</div>
<?php endforeach; ?>
<?php wp_reset_query(); ?>
但是,当打开其中一个子页面时,我还需要在侧栏中显示相同的列表。目前,在子页面上使用相同的代码而不进行调整时不显示任何内容。
我尝试将“'post_parent'=&gt; $ post-&gt; ID”更改为“post_parent'=&gt; $ post-&gt; ID。”echo = 0“,”其中显示了一些子页面,但不是全部,所以我显然搞砸了。
有人可以帮我修改代码以处理父代的子页面以及父代的子页面吗?
由于 扎克
答案 0 :(得分:1)
使用此功能生成菜单的ID。它将确定页面是否有父页面,并使用该ID,否则返回当前页面ID。
function get_menu_id(){
if ($post->post_parent) {
$parent = get_post_ancestors($post->ID);
return $parent[0];
} else {
return $post->ID;
}
}
完整代码
<?php
function get_menu_id(){ //this function would be better off in your functions.php file
if ($post->post_parent) {
$parent = get_post_ancestors($post->ID);
return $parent[0];
} else {
return $post->ID;
}
}
$args = array(
'orderby' => 'menu_order',
'order' => 'ASC',
'post_parent' => get_menu_id(),
'post_type' => 'page',
'post_status' => 'publish'
);
$postslist = get_posts($args);
foreach ($postslist as $post) : setup_postdata($post);
?>
<div class="top10">
<a href="<?php the_permalink();?>">
<?php the_post_thumbnail('large'); ?>
</a>
</div>
<?php endforeach; ?>
<?php wp_reset_query(); ?>