我有以下几点
GrandParent
-Parent01
--Child
-Parent02
--Child
--Child
-Parent03
--Child
我希望找到一个解决方案,当我在祖父母页面上时,它只会返回父母,而不会返回孩子。
GrandParent
-Parent01
-Parent02
-Parent03
这是我目前拥有的代码,它生成祖父母页面的所有父母和孩子,并将他们放在一个表中。
<?php $postid = get_the_ID(); ?>
<?php /* $pages = get_pages(array(\'child_of\' =>$postid)); */
$pages = get_children(array(
\'numberposts\' =>30,
\'post_parent\' => $heading_page->post_id
));
$tCount= 0;
?>
<table align="center" width="100%"><tr>
<?php foreach ($pages as $page): ?>
<?php if($tCount % 2 == 0)
{
echo \'</tr><tr>\';
}?>
<td>
<div id="polaroid">
<figure>
<a href="<?php echo get_permalink($page->ID); ?>">
<?php echo get_the_post_thumbnail($page->ID, array(300,250)); ?></a>
<figcaption>
<a href="<?php echo get_permalink($page->ID); ?>"><?php echo $page- >post_title ?>
</a></figcaption>
</figure>
</div>
</td>
<?php $tCount++; endforeach; ?>
</tr></table>
最合适的回答,由SO网友:Nemothefish 整理而成
This answer 堆栈溢出为我修复了它。。。通过在这些行中添加。。
<?php foreach ( $pages as $page ): ?>
<?php if ( $postid != $page->post_parent ) continue; ?>
SO网友:Tom J Nowell
您正在使用get_children
它完全按照你告诉它的去做。你让它得到那篇文章的所有后代,这就是你得到的。您需要更具体地了解您要查询的内容,您只需要直接的后代。
您最初的想法几乎是正确的:
$pages = get_pages(array(\'child_of\' => $postid ));
但是没有
child_of
参数根据
WP_Query
文档因此,与其要求孩子发帖子,不如要求孩子的家长发帖子
$postid
, 给我们:
$pages = get_posts(array(
\'post_parent\' => $postid,
\'post_type\' => \'page\'
));
其他注意事项:
使用网格系统或左浮动div代替表格,它更灵活,您可以删除计数逻辑,使循环更简单Indent your code, 缩进的代码更易于阅读,使整个类别的错误显而易见,并使人们更容易理解您的代码和编写问题的答案foreach () {}
而不是foreach(): endforeach;
, 它可以更好地与编辑器、自动化工具和检查器配合使用
每行只放一条命令,所有div都有一个polaroid的ID,但ID是唯一的,请使用类