生成Wordpress页面的子项的标题和缩略图列表

时间:2015-03-20 15:11:33

标签: php jquery html mysql wordpress

我希望有一个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>

但不是打印出三个子页面更多信息,更多信息二,更多信息三,它只打印信息,信息,信息,这是父页面。

谁能看到我出错的地方?

2 个答案:

答案 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。