我希望有一个PHP脚本,可以自动生成包含其标题,永久链接和特色图像的子页面列表。现在,我已经完成了大部分脚本,但是当我运行它时,它打印出三次(有多少子页面的数量)当前页面标题,缩略图和永久链接。请参阅下面的脚本和示例:
主要脚本
$type = 'page'; // CHILD OR SUB-PAGE
$args = array(
'parent' => $post->ID,
'child_of' => $post->ID,
'post_type' => $type,
'post_status' => 'publish',
'sort_order' => 'DESC',
'sort_column' => 'menu_order'
);
$count = 1;
$pages = get_pages($args);
foreach ($pages as $page) { setup_postdata( $page );
?>
<?php if ($count % 2 == 0) { ?>
<?php get_template_part( 'partials/templates/element', 'infopic' ); ?>
<?php get_template_part( 'partials/templates/element', 'infolink' ); ?>
<?php } else { ?>
<?php get_template_part( 'partials/templates/element', 'infolink' ); ?>
<?php get_template_part( 'partials/templates/element', 'infopic' ); ?>
<?php } //END ELSE ?>
<div class="col-sm-12">
<div class="clear"> </div>
</div>
这些是两个包含的文件。检查$count
是否均匀是将内容布局替换为文本 - 图像或图像 - 文本以获得更漂亮的布局。
元素 - 信息链接
global $page;
<div class="col-sm-6 dim-pad">
<div class="big-text">
<a href="<?php the_permalink($page->ID); ?>"><h5><?php echo get_the_title($page->ID); ?></h5></a>
</div>
</div>
元素 - 信息图片
<?php global $page; ?>
<div class="col-sm-6 dim-pad">
<div class="info-image">
<?php echo get_the_post_thumbnail($page->ID); ?>
</div>
</div>
但不是打印出三个子页面更多信息,更多信息二,更多信息三,它只打印信息,信息,信息,这是父页面。
谁能看到我出错的地方?
答案 0 :(得分:0)
您错误地使用了setup_postdata()
。
要让setup_postdata()
工作,您必须使用变量$post
。
改变这个:
foreach ($pages as $page) { setup_postdata( $page );
要:
foreach ( $pages as $post ) {
setup_postdata( $post );
然后在模板中删除部分global $page;
,不要将$page->ID
传递给任何这些功能。
最后在foreach循环之后添加:
wp_reset_postdata();
这会将您的全局$post
值恢复回父页面。
答案 1 :(得分:0)
我觉得这可能是个问题:
“请注意,'hierarchical'参数必须设置为0(false) - 这不是默认值 - 否则除了没有父级的顶级页面之外的任何页面都不会返回结果(ID = 0 )和默认的所有页面(ID = -1)。“
...指定'parent'时,您必须设置'hierarchical'=&gt; '0',
希望我能提供帮助。 A.L。