高级自定义字段保持返回相同的值

Advance Custom fields keep returning the same value

详细来说,我有 11 个 post,在每个 post 中,我将图像输入到高级自定义字段表单中。但是当我打电话给他们时,我得到了 11 个结果,但只有 1 个 post.

这是我正在处理的内容。只是告诉你这是在 functiuons.php 中,因为我想把它作为简码,这样我就可以在多种 post 类型上使用它。

            function get_slider() {
            $args = array(
            'post_type' => 'projekti',
            'posts_per_page' => -1,
                    );
                    $posts = get_posts($args);

                    ob_start();

                    if( $posts ): ?>
                    <div class="slider_slick">
                    <?php foreach($posts as $post): setup_postdata( $post ); ?>
                        <?php if( have_rows('slider') ): ?>
                            <?php while( have_rows('slider') ): the_row(); ?>
                                <?php // vars
                                $image = get_sub_field('image_slider');
                                $link = get_sub_field('slider_link');                       
                                ?>      
                                <div class="slide">
                                    <a href="<?php echo $link; ?>">
                                    <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt'] ?>" />
                                    </a>
                                </div>

                            <?php endwhile; ?>
                        <?php endif; ?>                         
                    <?php endforeach; ?>
                    <?php wp_reset_postdata(); ?>
                    </div>
                    <?php endif;
                    return ob_get_clean();
        }
    add_shortcode ('slick_slider' , 'get_slider');

我创建的模板上有几乎相同的代码,但是那个有效,这个无效,我不知道为什么。

为 acf have_rows() 函数传递当前 post 的 ID。我已经完成了使用 , $currentId = get_the_ID(); 然后在我需要的地方使用变量 $currentId.

        function get_slider() {
        $args = array(
        'post_type' => 'projekti',
        'posts_per_page' => -1,
                );
                $posts = get_posts($args);

                ob_start();

                if( $posts ): ?>
                <div class="slider_slick">
                <?php foreach($posts as $post): setup_postdata( $post );
                 $currentId = get_the_ID();
                  ?>
                    <?php if( have_rows('slider', $currentId) ): ?>
                        <?php while( have_rows('slider', $currentId) ): the_row(); ?>
                            <?php // vars
                            $image = get_sub_field('image_slider');
                            $link = get_sub_field('slider_link');                       
                            ?>      
                            <div class="slide">
                                <a href="<?php echo $link; ?>">
                                <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt'] ?>" />
                                </a>
                            </div>

                        <?php endwhile; ?>
                    <?php endif; ?>                         
                <?php endforeach; ?>
                <?php wp_reset_postdata(); ?>
                </div>
                <?php endif;
                return ob_get_clean();
    }
add_shortcode ('slick_slider' , 'get_slider');

我必须添加

  global $post;

到我的函数的顶部以使其工作。无论如何,谢谢你们的帮助。