具有高级自定义字段的嵌套Wordpress Post对象循环

时间:2019-03-07 11:00:09

标签: php wordpress advanced-custom-fields

我要在另一个帖子对象中显示一个帖子对象。

这对于在另一页面上显示内容(包含帖子对象)很有用。

我希望这可能与重复的wp_reset_postdata无关。

感谢任何想法和建议。

<?php $post_object = get_sub_field('first-loop');
if( $post_object ): 
    $post = $post_object;
    setup_postdata( $post ); ?>

        <?php $post_object = get_sub_field('second-loop');
        if( $post_object ): 
            $post = $post_object;
            setup_postdata( $post ); ?>

                <!-- advanded custom fields -->

            <?php wp_reset_postdata();?>
        <?php endif; ?>

    <?php wp_reset_postdata();?>
<?php endif; ?>

2 个答案:

答案 0 :(得分:0)

尝试

<?php $post_object = get_sub_field('first-loop');
if( $post_object ): 
    $post1 = $post_object; // this should be post object not id, if id then use get_post function and use post object.
    setup_postdata( $post1 ); ?>

        <?php $post_object = get_sub_field('second-loop');
        if( $post_object ): 
            $post2 = $post_object;
            wp_reset_postdata();
            setup_postdata( $post2 ); ?>

                <!-- advanded custom fields -->

            <?php wp_reset_postdata();
            setup_postdata( $post1 ); ?>
        <?php endif; ?>

    <?php wp_reset_postdata();?>
<?php endif; ?>

答案 1 :(得分:0)

我得到了高级自定义字段支持的帮助(谢谢帕特里克!),解决方案如下。这是单本书 [自定义帖子] 上的循环,其中包含一个自定义字段,该字段是一个帖子对象,该字段从另一个列出一系列帖子对象(书籍)的自定义帖子(卖家)获取内容。

<?php  $post_object = get_field('post-object'); 
if( $post_object->ID ): ?>
        post-object title: <?php echo $post_object->post_title; ?>
        <?php if( have_rows('books', $post_object->ID) ):?>
            <?php while ( have_rows('books', $post_object->ID) ) : the_row();?>
                <?php  $book = get_sub_field('book');
                if( $book->ID ): 
                ?>
                Title: <?php echo($book->post_title); ?>
                <?php echo($book->cover ); ?>
                <?php $image = get_field('cover' , $book);
                if( !empty($image) ): ?>
                    <img src="<?php echo $image['sizes']['medium']; ?>" alt="<?php echo $image['alt']; ?>" />
                <?php endif; ?>
                <?php endif; ?> 
            <?php endwhile;?>
        <?php endif;?>
    <?php wp_reset_postdata(); ?>
<?php endif; ?>